在黑莓手机上使用JavaScript操作DOM
下面是一段在Blackberry中不起作用的代码(来自更大的代码)。我正在操纵DOM动态插入ul元素 我正在黑莓9700操作系统5.0上测试。我所做的是非常基本的,不需要动脑筋的,并且可以在其他桌面浏览器上使用。我知道Blackberry上的JavaScript支持是不完善的,但这是基本的东西吗 附件是我看到的错误的屏幕截图。JavaScript报告insertBefore函数不存在。但是,我已经测试了它的存在性,并且在我直接附加到主体时可以工作在黑莓手机上使用JavaScript操作DOM,javascript,dom,blackberry,browser,Javascript,Dom,Blackberry,Browser,下面是一段在Blackberry中不起作用的代码(来自更大的代码)。我正在操纵DOM动态插入ul元素 我正在黑莓9700操作系统5.0上测试。我所做的是非常基本的,不需要动脑筋的,并且可以在其他桌面浏览器上使用。我知道Blackberry上的JavaScript支持是不完善的,但这是基本的东西吗 附件是我看到的错误的屏幕截图。JavaScript报告insertBefore函数不存在。但是,我已经测试了它的存在性,并且在我直接附加到主体时可以工作 document.body.insertBefo
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>
函数切换(){
_ul=document.getElementById('ul-list');
如果(_ul)
{
文件.body.removeChild(_ul);
}否则
{
ul=document.createElement(“ul”);
ul.setAttribute('id','ul-list');
li=document.createElement('li');
li.appendChild(document.createTextNode(“HTML”);
ul.儿童(li);
li=document.createElement('li');
li.appendChild(document.createTextNode(“CSS”);
ul.儿童(li);
li=document.createElement('li');
appendChild(document.createTextNode(“JavaScript”);
ul.儿童(li);
li=document.createElement('li');
appendChild(document.createTextNode(“XML”);
ul.儿童(li);
parent=document.getElementById('container');
同级=document.getElementById('para');
尝试
{
func=parent.insertBefore;
if(!func)
{
警报(“功能不存在!”);
}
父母。插入前(ul,兄弟姐妹);
}捕捉(错误)
{
警惕(err);
}
}
}
将此链接列表显示为水平菜单:
我确认这是Blackberry 5.0(在设备9000和9700上)中DOM实现中的一个错误 解决方法是,如果必须动态插入或删除图元,则将其直接放置在主体下方。有效的代码是:
<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>
函数切换(){
_ul=document.getElementById('ul-list');
如果(_ul)
{
文件.body.removeChild(_ul);
}否则
{
ul=document.createElement(“ul”);
ul.setAttribute('id','ul-list');
li=document.createElement('li');
li.appendChild(document.createTextNode(“HTML”);
ul.儿童(li);
li=document.createElement('li');
li.appendChild(document.createTextNode(“CSS”);
ul.儿童(li);
li=document.createElement('li');
appendChild(document.createTextNode(“JavaScript”);
ul.儿童(li);
li=document.createElement('li');
appendChild(document.createTextNode(“XML”);
ul.儿童(li);
parent=document.body;
同级=document.getElementById('para');
尝试
{
func=parent.insertBefore;
if(!func)
{
警报(“功能不存在!”);
}
父母。插入前(ul,兄弟姐妹);
}捕捉(错误)
{
警惕(err);
}
}
}
将此链接列表显示为水平菜单:
更改是内容直接位于主体下,而不是div“container”的子项。我相信这在Blackberry 6.0+中不是问题,它使用WebKit渲染引擎。将需要使用此错误浏览器,直到它们不受支持为止