处理iframe时出现Jquery .load问题?

时间:2010-09-14 15:42:27

标签: php javascript jquery iframe load

我成功使用以下代码将一些内容异步加载到网页中:

 jQuery.noConflict();
        jQuery("#boxasync").load("box.php", "",
            function(responseText, textStatus, XMLHttpRequest) {
                if(textStatus == 'error') {
                    jQuery('#boxasync').html('There was an error making the AJAX request');
                }});

现在,当尝试使用相同的代码加载公共共享按钮(tweetme,facebook,digg)时,网页内容将被删除,浏览器将处于某种等待状态。

我发现那些共享按钮会运行一些嵌入iframe的代码(而且我也害怕javascript)。

这可能是jQuery .load失败的原因吗?

1 个答案:

答案 0 :(得分:0)

设计用于第三方调用的脚本通常使用document.write()输出其内容。

当加载到主页面源中的直接<script>元素时,这很好,因为此时document.write只是将<script>的位置添加到页面document.open()它。但是在加载页面之后没有好处:内容最终没有“写入位置”,所以JS的作用是推断你打算在调用write之前编写一个全新的文档{1}}。这会破坏当前页面内容。

您可以尝试通过创建覆盖document.write的自己的函数来“欺骗”第三方脚本,将传递给它的字符串重定向到变量,然后使用innerHTML将其输出到页面/ html()。但你可能最好不要自己提取脚本所做的事情并自己做。减少对第三方脚本的依赖是一件好事,因为每次使用第三方脚本时,您都会为该方提供完整的跨站点脚本访问权限。

在任何情况下,您都不应使用.load().html()来加载包含<script>的内容,因为结果非常不可靠。

相关问题