编程语言
首页 > 编程语言> > javascript – 控制来自第三方的document.write调用的范围

javascript – 控制来自第三方的document.write调用的范围

作者:互联网

我正在编写一个依赖外部javascript文件(我无法控制)的网页,它使用document.write返回数据.有没有办法动态调用函数而不覆盖整个文档?这是我能想到的最简洁的代码:

<html>    
<head>
<script type="text/javascript">
    function horriblefunction () {
        document.write("new text");
    }
</script>
</head>

<body>
Starting Text...
<div id="pleasewriteinme"></div>
Other text...
<button onclick="horriblefunction();">Click</button>
</body>
</html>

这个想法开始,不改变“horriblefunction()”(因为它是外部的)新文本可以放在div而不是覆盖页面.这是可能的,还是在创建页面时必须在div中调用函数?

谢谢你的帮助

解决方法:

在页面完成渲染后使用document.write的唯一方法是暂时将该函数替换为您自己制作的函数,将内容推送到div中.例如.

function horriblefunction() { 
    var old_dw = document.write;
    document.write = function(text) { 
        document.getElementById( 'some_div' ).innerHTML = text;
    }

    // now call your external JS function that uses document.write

    document.write = old_dw;
}

只要外部JS已经加载并且您只是调用一个函数,这将有效.如果您需要加载JS(例如,通过在DOM中插入新的< script>标记),请记住该操作是异步的,并且您需要观察DOM以了解何时可以安全地恢复旧版本的文件撰写.

标签:javascript,dom,html,document-write,externalinterface
来源: https://codeday.me/bug/20190526/1158791.html