`
cyfgod
  • 浏览: 64819 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Safari浏览器关于append DOM Node的问题

    博客分类:
  • Web
阅读更多
特别注意,在Safari浏览器中是不支持把一个DOM Node直接append到另一个DOM Node上的,不然会抛出JS异常。解决方案,是拷贝Node下所有节点到另一Node上,相关函数如下:

function copyNodes( nodeTo, nodeFrom )
{
    if( !nodeTo || !nodeFrom )
        return;

    var ownerDoc = (nodeTo.nodeType == Node.DOCUMENT_NODE ? nodeTo : nodeTo.ownerDocument);
    var nodes = nodeFrom.childNodes;
    if( ownerDoc.importNode )
    {
        for( var i=0; i < nodes.length; i++ )
        {
            nodeTo.appendChild( ownerDoc.importNode( nodes[i], true ) );
        }
    }
    else
    {
        for( var i=0; i < nodes.length; i++ )
        {
            nodeTo.appendChild( nodes[i].cloneNode( true ) );
        }
    }
}

所以在调用时可以针对Safari浏览器做特别处理,例如:
if( BrowserUtility.isSafari( ) )
{
    copyNodes( dataTo, dataFrom );
}
else
{
    dataTo.appendChild( dataFrom.documentElement );
}
2
0
分享到:
评论
1 楼 cyfgod 2011-03-07  
谷歌浏览器Chrome和Safari浏览器用的是相同的javascript引擎,也会有同样的问题。

相关推荐

    关于jquery append() html时的小问题的解决方法

    这里就涉及到一个关于append()函数和其他DOM操作需要注意的细节:当直接使用append()函数来插入带有标签和属性的复杂字符串时,浏览器并不会对这些字符串进行解析,而是将其当作纯文本进行追加。这就意味着,如果...

    Node.js-append-tree在附加日志上建模树结构

    在Node.js环境中,"append-tree"是一个用于在附加日志上构建树形结构的数据模型工具。这个库的主要目的是帮助开发者高效地管理和分析日志数据,尤其是对于那些具有层次关系的日志信息。通过将日志条目组织成树结构,...

    dom.js:微型javascript dom库

    Dom.append dom.prepend 之后 之前的Dom Dom.replace 删除 模板 可拖动 实用程序 Dom.requestAnimationFrame Dom.cancelAnimationFrame Dom.isElement Dom.isNode 事件处理 Dom.addListener Dom....

    /* append*/ oracle append 知识点

    - **数据一致性:** 使用 `/*append*/` 插入时需要注意数据的一致性问题。如果在非事务性的环境中使用,可能会导致数据不一致。 - **备份与恢复:** 需要注意的是,在归档模式下使用 `/*append*/` 能够减少日志的...

    前端开源库-vue-append

    此外,频繁的DOM操作会影响页面性能,所以合理地使用Vue-append,避免过度依赖它来执行复杂的JavaScript逻辑。对于大型应用,更推荐将业务逻辑移到组件的`methods`或计算属性中。 总结 Vue-append 是一个增强Vue....

    Node.js中使用jQuery的做法

    在Node.js环境中使用jQuery并不是直接像在浏览器中那样无缝集成,因为Node.js是一个服务器端的JavaScript运行环境,它并不包含浏览器中的DOM(文档对象模型)和Window对象。然而,由于jQuery主要是为了解决前端开发...

    harmonyos2-dombench:Node.jsDOM实现的基准测试工具

    和声2 Node.js 中 DOM 实现的基准工具 TL; 博士 dom.js 比 jsdom 快 1.75 倍 domino ...dom.js ...jsdom ...$node ...DOM ...DOM ...[jsdom|domino|domjs] ...jsdom $node ...jsdom Node ...jsdom. append: 875ms empty: 559

    Python中循环后使用list.append()数据被覆盖问题的解决

    主要给大家介绍了关于Python中循环后使用list.append()数据被覆盖问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    jQuery判断浏览器版本过低提示代码

    针对这个问题,我们可以编写代码来检测用户的浏览器版本,并在版本过低时给予友好的提示,以确保用户能够正常浏览网站并使用其功能。 标题中的"jQuery判断浏览器版本过低提示代码"是指使用jQuery来检测用户浏览器的...

    JavaScript利用append添加元素报错的解决方法

    在实际的开发过程中,可能需要考虑多种因素,如浏览器兼容性问题、DOM操作性能优化等。通过不断学习和实践,积累经验,可以逐渐提高解决这类问题的能力。 最后,附上一些关于DOM操作和层级错误处理的总结性建议: 1...

    Python append()函数在for循环中的覆盖问题解决文件

    文件就是一个python文件,里面有append()函数在for循环中使用出现覆盖的错误,并予以解决,配合本人博文内容《Python append()函数在for循环中的覆盖问题》观看更好

    jQuery浏览器导航栏

    在IT领域,jQuery是一款广泛使用的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画效果以及Ajax交互。在本主题中,我们将深入探讨如何使用jQuery来创建一个功能丰富的浏览器导航栏,这个主题通常...

    simple_html_dom,php下的html文件DOM解析库

    $element-&gt;append_child($newChild); ``` 5. **删除元素**:使用`remove()`函数移除元素。 ```php $element-&gt;remove(); ``` 6. **保存修改**:完成修改后,使用`save()`函数保存为HTML文件,或者`outertext`属性...

    jQuery判断浏览器版本及鉴别浏览器类型代码.rar

    在Web开发中,识别用户使用的浏览器类型和版本是非常重要的,因为不同的浏览器可能对...在实际项目中,这样的代码可以帮助开发者解决浏览器兼容性问题,确保网站在各种浏览器中都能正常工作,提升用户的WEB2.0体验。

    arcgis下append面图层

    本文将详细介绍在ArcGIS中如何进行“append面图层”的操作,即如何将多个面图层合并成一个单一的图层,同时保持或更新属性表。 首先,我们可以采用ArcToolbox中的工具来实现这一目标。在ArcToolbox中,找到...

    t解析文档dom的数据转曲和append

    t解析文档dom的数据转曲和append,方便文档vgl数据处理,对数据进行解析,转换,提取,装载。配合数据DOM,符合w3c规范作用于vgl数据

    appendData异步加载大数据量分片加载数据和增量渲染的解决方案

    在Echarts中,我们可以设置appendData的参数,如`params.data`来指定要加载的数据块,并在数据加载完成后调用`myChart.appendData(params)`,这样可以避免一次性加载全部数据导致的性能问题。 增量渲染则是Echarts...

    PYTHON:二叉树遍历方法

    stack.append(node.right) if node.left: stack.append(node.left) ``` 2. 中序遍历(左-根-右) 中序遍历首先遍历左子树,然后访问根节点,最后遍历右子树。这在二叉搜索树中特别有用,因为可以按照升序或降序...

    Append原理Append原理

    Append原理 Append原理是Oracle数据库中的一种高效插入数据的方法。它通过绕过回滚段,减少了undo和redo的生成,从而提高了数据插入的速度。 Append原理的主要特点是: 1. 绕过回滚段:Append操作不操作回滚段,...

    解决jQuery使用append添加的元素事件无效的问题

    在jQuery中,`append`方法是用来向DOM树中动态添加元素的,这在构建动态页面时非常常见。然而,一个常见的问题是在使用`append`添加的元素上绑定的事件经常无法正常工作,即所谓的“事件无效”。这是因为这些新添加...

Global site tag (gtag.js) - Google Analytics