javascript
  • asp.net
  • 2011-07-11 77 views 1 likes 
    1

    私はIE 7と8でうまくいきましたが、ユーザーが互換モードで実行していない限り、IE 9では動作しません。IE9 Javascript未定義変数

    <asp:Label ID="invNumLink" runat="server" Font-Underline="true" ForeColor="Blue" Text='<%# Eval("Order_No") %>' createDate='<%# string.Format(Eval("create_date").ToString(),"MM/dd/yyyy") %>' 
               operatorNo='<%# Eval("operator_no") %>' orderNo='<%# Eval("Order_No") %>' loc='<%# Eval("Location") %>' table='<%# Eval("table_no") %>' recall='<%# Eval("recall_code") %>' 
               orderID='<%# Eval("ID") %>' acrID='<%# Eval("ACR_ID") %>' 
               onclick="goToDetail(this.orderNo,this.createDate, this.operatorNo, this.loc, this.table, this.recall, this.orderID, this.acrID);" style="cursor:pointer" ></asp:Label> 
    
    <script type="text/javascript"> 
        function goToDetail(orderNo, createDate, operatorNo, loc, table, recall, orderID, acrID) { 
         var URL = 'OrderDetailView.aspx?orderNo=' + orderNo + '&' + 'createDate=' + createDate + '&' + 'operatorNo=' + operatorNo + '&' + 'loc=' + loc + '&' + 'table=' + 
                 table + '&' + 'recall=' + recall + '&' + 'id=' + orderID + '&' + 'acrID=' + acrID; 
         day = new Date(); 
         id = day.getTime(); 
         window.open(URL, id, 'toolbar=1,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=1100,height=700,left = 62,top = 15') 
        } 
    </script> 
    

    IE9では、「goToDetail」関数に送信された値はすべて定義されていません。どのようにこれを修正するための任意のアイデア?

    EDIT私は背後にあるコードからのJavaScriptの呼び出しを追加することで、これを解決:

    invNumLink.Attributes.Add("onclick", string.Format("goToDetail('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}'); return false;", item.GetDataKeyValue("Order_No").ToString(), 
           string.Format(item.GetDataKeyValue("Create_Date").ToString(), "MM/dd/yyyy"),item.GetDataKeyValue("Operator_No").ToString(), item.GetDataKeyValue("Location").ToString(), 
           item.GetDataKeyValue("table_no").ToString(), item.GetDataKeyValue("recall_code").ToString(), item.GetDataKeyValue("ID").ToString(),item.GetDataKeyValue("ACR_ID").ToStrin 
    

    おかげで、

    アーロン

    +0

    タグの前にjavascriptブロックを移動しようとしましたか? –

    +0

    それは助けにならない - 問題はIE9が古いブラウザのような非標準的な属性の属性値を引き継がないということです。 – Pointy

    +0

    @ Pointy - これはまったくクールではない.... :( – Aaron

    答えて

    3

    あなたはこのように動作し、データの属性を、使用することができ

    <span operatorNo="value"> 
    

    あなたは

    <span data-operatorNo="value"> 
    

    を使用し、

    this.getAttribute("data-operatorNo") 
    
    でアクセス

    これはIE6で動作し、IE7 +で動作すると文書化されています。 HTMLタグの非標準の属性についてDo HTML5 custom data attributes “work” in IE 6?

    1

    私は、これは醜いです知っています..しかし、値を直接渡すと問題が解決するでしょう。

    の代わりに::

    <asp:Label ID="invNumLink" runat="server" Font-Underline="true" ForeColor="Blue" Text='<%# Eval("Order_No") %>' createDate='<%# string.Format(Eval("create_date").ToString(),"MM/dd/yyyy") %>' 
               operatorNo='<%# Eval("operator_no") %>' orderNo='<%# Eval("Order_No") %>' loc='<%# Eval("Location") %>' table='<%# Eval("table_no") %>' recall='<%# Eval("recall_code") %>' 
               orderID='<%# Eval("ID") %>' acrID='<%# Eval("ACR_ID") %>' 
               onclick="goToDetail('<%# Eval("Order_No") %>','<%# string.Format(Eval("create_date").ToString(),"MM/dd/yyyy") %>', '<%# Eval("operator_no") %>', '<%# Eval("Location") %>', '<%# Eval("table_no") %>','<%# Eval("recall_code") %>', '<%# Eval("ID") %>', '<%# Eval("ACR_ID") %>');" style="cursor:pointer" ></asp:Label> 
    
    +0

    これは醜いですが、私はそれにショットを与えています... – Aaron

    +0

    Evalステートメントの中の二重引用符で動作しません。以前のやり方と同じように、私はコードの中にスタイルを追加する必要があると思います... – Aaron

    1

    、私はあなたがHTMLで定義されている非標準の属性をフェッチではなく、直接element.attNameでそれらにアクセスするためにelement.getAttribute("attName")を使用する必要があると考えています。標準を維持するには、カスタムデータ属性の前に "data-"を付ける必要があります。

    関連する問題