2

我使用 WP 原生函数 wp_enqueue_script() 在 WP 前端和后端加载我的所有脚本,以便它可以处理对同一脚本的重复调用等等。

其中一个问题是其他程序员不使用这个函数,而是直接从他们的代码中加载他们的脚本,这会导致 jQuery 或 jQuery-UI 被加载两次,从而导致一堆错误。

另一个问题是不属于我的代码会触发错误并在此之后停止 JavaScript 的执行。

简而言之:

Javascript 错误发生在不属于我的代码中。
由于该错误,我的代码无法执行。
我希望我的代码绕过该错误并仍然执行。
有没有办法处理这些问题?

4

2 回答 2

5
function ShieldAgainThirdPartyErrors($) {
    // Code you want protect here...
}

// First shot.
// If no error happened, when DOMContentLoaded is triggered, this code is executed.
jQuery(ShieldAgainThirdPartyErrors);

// Backup shot.
// If third party script throw or provoke an unhandled exception, the above function 
// call could never be executed, so, lets catch the exception and execute the code.
window.onerror = function () {

    ShieldAgainThirdPartyErrors(jQuery);

    return true;
}

如果您想在必要时扣动您的扳机两次;)设置一个标志以表示第一次射击成功并避免备用射击,我认为在某些情况下,即使第三方代码进入,您的第一次射击也可以执行麻烦并触发第二枪。

于 2013-02-06T22:12:22.397 回答
0

完全不推荐,但您可以使用:

try {  
  //Some code likely to throw an error  
} catch (err) {}

这将允许之后的任何内容继续运行,尽管您通常也应该捕获错误。我不会捕获错误的唯一情况是使用数组并在somearray[i-1]小于i-10 的情况下进行操作。这只是因为它比使用条件来防止它更干净。

于 2013-02-04T00:21:24.857 回答