窗口.Onerror:当动态添加的脚本(通过脚本标签)出错时,url属性为空
window.onerror: url property empty when error in dynamically added script (via script tag)
我想要能够做的是知道在动态添加的脚本中是否发生了错误。这应该通过检查onerror
事件参数的url
属性来完成。
然而,当我在脚本的开始添加事件侦听器时,即在脚本标签被动态添加之前,如果在动态添加的脚本中发生错误,则url
属性为空。
所以我尝试在脚本标签添加后重新绑定事件,如
document.head.appendChild(scriptElement);
document.getElementById(scriptTagId).addEventListener('onerror',someErrorFunction);
和
scriptElement.setAttribute('onerror','someErrorFunction(event);');
document.head.appendChild(scriptElement);
和
document.head.appendChild(scriptElement);
window.addEventListener('onerror',someErrorFunction);
,但无济于事。实际上,只有使用第一种方法才会发现错误,即在脚本的开头绑定onerror
事件。
我认为你有一个问题,因为你是通过id获得脚本元素。您可以使用一个简单的脚本加载器来实现最终结果。主要区别在于它绑定到脚本元素的onerror
和onload
属性,而不是使用事件侦听器
编辑
我使用window.onerror
和绑定到onafterscriptexecute
而不是onload
的脚本没有任何问题,并使用document.currentScript
来获得抛出错误的脚本标签。
window.onerror = function(message, source, lineno, colno, error){
console.log('window.error', {
message,
source,
lineno,
colno,
error,
src: document.currentScript.src
})
}
function loadScript(src, callback) {
console.log('loading: ' + src)
const script = document.createElement('script')
script.onerror = function() {
console.log('error loading script: ' + src)
}
script.onafterscriptexecute = callback
script.src = src
document.head.appendChild(script)
}
loadScript('http://codepen.io/synthet1c/pen/BLwWOb.js', function(){
console.log('this aint gonna happen')
})
loadScript('https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js', function(){
console.log('success loaded jQuery')
})
相关文章:
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- Java脚本将URL转换为已保存的URL时出错
- 从 java 脚本调用函数时 PHP 中出错
- 若语句出错,谷歌应用程序脚本
- JavaScript InvalidCharacterError 在编写文本框脚本时出错
- Casperjs-登录https网站的脚本出错
- 将Dropbox API脚本加载到chrome扩展时出错
- setHours()从电子表格导入的日期创建谷歌日历事件时出错-应用程序脚本
- 谷歌应用程序脚本:;范围不是函数,它是对象;尝试在单元格中放置注释时出错
- jQuery$(document).ready阻塞页脚脚本时出错
- 尝试将数组从内容脚本发送到弹出脚本时出现 Chrome 扩展程序时出错
- 避免在变量之一未定义所有脚本停止工作时出错
- 可以忽略“加载脚本时出错”js 错误吗?
- 运行 Screeps 游戏脚本时出错
- “尝试在清除的范围内运行编译和运行脚本” - 使用 Google Graph API 在 Drupal 中出错
- 上传到服务器时,外部jquery js脚本出错
- 在ASP.NET应用程序中使用母版页时注册客户端脚本块时出错
- Java脚本函数不;一个函数出错后无法工作
- 链接预览脚本出错
- jQuery.noConflict() 导致另一个脚本出错