如何测试document.write()是否成功
我在我的应用程序中包含了一些第三方代码,我发现它使用了包装在try..catch语句中的document.write()代码。 document.write()不返回任何东西,所以我想知道是否有一种方法来测试document.write()是否成功,所以我可以测试捕获错误。 作为一个例子,我尝试了包含这个脚本异步,但是这停止了document.write()部分的执行,但它没有在catch()部分运行代码。
示例代码:
try {
document.write('<script type="text/javascript" src="/plugin.js">');
console.log('OK');
} catch (e) {
console.log('ERROR');
}
您可以将id添加到脚本标记中,然后通过id从DOM中获取它:
document.write('<script type="text/javascript" src="/plugin.js" id="myscript"></script>');
if (document.getElementById('myscript')) {
console.info('success');
} else {
console.error('failure');
}
或者如果您不想更改任何内容,则可以尝试在页面上的所有脚本中查找它:
document.write('<script type="text/javascript" src="/plugin.js"></script>');
(function () {
var scripts = document.getElementsByTagName('script'),
l = scripts.length - 1;
// If you'll check that just after document.write then it should be last script
// in the other case you would need to check all scripts.
// From src I'm removing domain - at least Safari is returning full URL here
if (scripts.length && scripts[l - 1].src && scripts[l - 1].src.replace(/^([a-z]+://[^/]*)/i, '') == '/plugin.js') {
console.info('success');
} else {
console.error('failure');
}
}());
你可以添加一个临时变量,或者简单地记下plugin.js中的现有变量,然后在控制台中输入这个变量。 如果它存在,它会打印它的值,否则它会打印'未定义' - 是否有任何迹象表明它没有工作?
链接地址: http://www.djcxy.com/p/47905.html