2011-11-13 2 views
1

ここには、Blackberryで動作しない(もっと大きなコードからの)コードスニペットがあります。私はul要素を動的に挿入するためにDOMを操作しています。Blackberryの携帯電話でJavaScriptを使用してDOMを操作する

私はBlackberry 9700、OS 5.0でテストしています。私がやっていることは、非常に基本的なものであり、他のデスクトップブラウザでもうまく動作しません。私はブラックベリーでのJavaScriptサポートがばかげていることを知っている - しかし、この基本的なものは?

添付されているエラーのスクリーンショットが添付されています。 JavaScriptは、関数insertBeforeが存在しないことを報告します。しかし、私は身体

document.body.insertBefore(newNode, sibling); 

動作しないコードに直接追加する場合、それが存在していて、動作することをテストしている:私はこれがあることを確認

<html> 
<head> 
    <script type="text/javascript"> 
    function toggle(){ 
     _ul = document.getElementById('ul-list'); 
     if(_ul) 
     { 
      document.body.removeChild(_ul); 
     }else 
     { 
      ul = document.createElement("ul"); 
      ul.setAttribute('id','ul-list'); 
      li = document.createElement('li'); 
      li.appendChild(document.createTextNode("HTML")); 
      ul.appendChild(li); 

      li = document.createElement('li'); 
      li.appendChild(document.createTextNode("CSS")); 
      ul.appendChild(li); 

      li = document.createElement('li'); 
      li.appendChild(document.createTextNode("JavaScript")); 
      ul.appendChild(li); 

      li = document.createElement('li'); 
      li.appendChild(document.createTextNode("XML")); 
      ul.appendChild(li); 

      parent = document.getElementById('container'); 
      sibling = document.getElementById('para'); 
      try 
      { 
       func = parent.insertBefore; 
       if(!func) 
       { 
        alert("Function doesn't exist!"); 
       } 
       parent.insertBefore(ul, sibling); 
      }catch(err) 
      { 
       alert(err); 
      } 


     } 

    } 
    </script> 
<style type="text/css"> 

</style> 
</head> 
<body> 
    <div id ="container"> 

     <p id ="para" >Display this link list as a horizontal menu:</p> 
     <input type="button" name="Show Now!" value ="Toggle" onClick=" toggle();"/> 
    </div> 
</body> 
</html> 

Exception from JavaScript

答えて

0

Blackberry 5.0でのDOM実装のバグ(デバイス9000と9700)

回避策は、要素を動的に挿入または削除する必要がある場合、要素を本体の直下に配置することです。動作するコードは次のとおりです。

<html> 
    <head> 
    <script type="text/javascript"> 
    function toggle(){ 
     _ul = document.getElementById('ul-list'); 
     if(_ul) 
     { 
      document.body.removeChild(_ul); 
     }else 
     { 
      ul = document.createElement("ul"); 
      ul.setAttribute('id','ul-list'); 
      li = document.createElement('li'); 
      li.appendChild(document.createTextNode("HTML")); 
      ul.appendChild(li); 

      li = document.createElement('li'); 
      li.appendChild(document.createTextNode("CSS")); 
      ul.appendChild(li); 

      li = document.createElement('li'); 
      li.appendChild(document.createTextNode("JavaScript")); 
      ul.appendChild(li); 

      li = document.createElement('li'); 
      li.appendChild(document.createTextNode("XML")); 
      ul.appendChild(li); 

      parent = document.body; 
      sibling = document.getElementById('para'); 
      try 
      { 
       func = parent.insertBefore; 
       if(!func) 
       { 
        alert("Function doesn't exist!"); 
       } 
       parent.insertBefore(ul, sibling); 
      }catch(err) 
      { 
       alert(err); 
      } 


     } 

    } 
    </script> 
    <style type="text/css"> 

    </style> 
    </head> 
    <body> 
     <p id ="para" >Display this link list as a horizontal menu:</p> 
     <input type="button" name="Show Now!" value ="Toggle" onClick=" toggle();"/> 
    </body> 
</html> 

変更内容は、本体の下にあり、div "container"の子ではありません。私はこれがWebKitレンダリングエンジンが使われているBlackberry 6.0+の問題ではないと信じています。サポートされる必要がないときまで、このバグのあるブラウザで生活する必要があります。

関連する問題