6

我已经阅读了很多关于 SCRIPT5: Access is Denied issue in IE9 的其他文章,但据我所知,这篇文章有点不同,我不确定它为什么会发生。

这种情况出现在使用标准 2011 主题的 Wordpress 3.4.1 安装上。我使用以下函数将我的脚本排入队列:

function my_scripts(){
    wp_deregister_script('jquery');
    wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js',null,null,true);
    wp_register_script('cycle', 'http://ajax.microsoft.com/ajax/jquery.cycle/2.88/jquery.cycle.all.js',null,null,true);
    wp_register_script('plugin', get_stylesheet_directory_uri() . '/scripts/plugin-init.js',null,null,true);
    wp_enqueue_script('jquery');
    wp_enqueue_script('cycle');
    wp_enqueue_script('plugin');
}

首先,脚本jquerycycle脚本都是从 CDN 中提取的。除了对单个元素的基本调用外,该plugin脚本为空。cycle

此时所有浏览器都可以正常工作,IE9 除外。我收到以下错误:

 SCRIPT5: Access is denied
 jquery.min.js, line 2 character 68522 

我很快发现这是一个跨源问题:

拒绝访问 IE 上的 jQuery 脚本

SCRIPT5:在 IE9 中对 xmlhttprequest 的访问被拒绝

我发现这很奇怪,因为我的插件中没有跨源函数。问题也出现在jquery它本身而不是我的代码上。尝试了几个建议的修复,但没有运气。

尝试了一些基本的东西。将脚本直接移动到页脚中。尝试将其直接移动到标题中。尝试将我的脚本排除在等式之外。在这一点上拉我的头发。

我最好的选择是实际查看导致代码错误的原因(因为我无法使用缩小版本)。此时代码直接在标题中,因此.min从脚本中删除了,进行了刷新,然后 TA-DA: 一切都在顺利运行。

如果我尝试使用&将未缩小的脚本声明移回my_scripts()函数,它将再次失败。如果我尝试将未缩小的脚本声明移动到页脚中,它将再次失败。我当时没有测试本地副本,只测试了 CDN 版本。wp_register_scriptwp_enqueue_script

这是相同的 SCRIPT5 错误,但不幸的是,我没有方便地生成错误的代码。这是前几天在办公室,我周末休息。我试图在我的个人沙盒上重现这些事件,但未能成功重现错误,这使我相信未列出的某些东西可能是罪魁祸首。

有谁知道这里发生了什么?为什么会jquery.min在未压缩文件不会失败的地方失败?为什么未缩小的文件会继续失败,除非它直接在<head>?

很高兴提供更多信息,尽管其中一些可能要等到我下周重返工作岗位。只要有能力,我将尝试发布其余代码。

4

2 回答 2

20

我有同样的问题,jQuery 1.8.1 为我解决了这个问题

于 2012-09-05T16:51:56.963 回答
2

出于某种原因,@axel 的回答对我不起作用。相反,我决定将文件托管在与我的 HTML 文件相同的服务器上并修复它(至少对我而言)

于 2013-02-12T23:17:46.770 回答