2011-03-18 73 views
15

IE9上出现奇怪的错误“SCRIPT70: Permission denied jquery.js, line 21 character 67”。搜索谷歌,但找不到任何东西,除了CKEditor上的错误。SCRIPT70:权限被拒绝IE9

位置这表明只包含以下内容:

P=navigator.userAgent,xa=false,Q=[],M,ca=Object.prototype.toString,da=Object.prototype.hasOwnProperty,ea=Array.prototype.push,R=Array.prototype.slice,V=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(typeof a==="string")if((d=Oa.exec(a))&&(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Sa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])]; 

人遇到这个错误?

* 附加信息: *我们打开一个iframe并在此iframe中调用一些javascript函数。

谢谢。

+2

您需要使用非缩小版来重现它,以便您可以看到实际导致它的代码行。 – ThiefMaster 2011-03-18 12:46:26

+1

我刚刚意识到,它不允许任何脚本文件。我可以在非缩小的js文件中看到一条非常简单的线条。 var imageType = jQuery(“#imageType”)。val(); 我们打开一个iframe并尝试运行JavaScript内部可以这是原因吗? – mehmet6parmak 2011-03-18 13:04:15

回答

10

当你的iframe是调用一些JavaScript(尤其是如果它影响到父页面 - 如父URL的哈希值变化)在IE9的SCRIPT70错误发生时最有可能

检查你的iframe的主机/协议/端口号相匹配。 IE9对主机名(在我的情况下是www部分)格外严格,而document.domain似乎没有提供解决方法。

在处理多个iframe时遇到此问题并修复了它,希望这可以帮助其他人解决同一问题。

1

如果指向与父站点不同的域,则无法访问任何iframe的内容。

-2

从这个页面提示应该有所帮助:http://forum.jquery.com/topic/strange-behaviour-in-ie9

确保HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Internet Explorer \ MAIN \ FeatureControl \ FEATURE_OBJECT_CACHING \ IEXPLORE.EXE没有被设置为0(应该是1或丢失)

+0

这个解决方案适用于我。 (Windows XP,IE8) – RGA 2012-12-17 05:20:58

+15

Uuhhm,他们真的希望我告诉所有访问我的公共站点的所有IE9用户吗? – 2013-10-30 16:19:51

+6

这是有史以来最糟糕的想法。你不能指望我告诉我的三千万用户改变他们的注册表。你是认真的吗? – Ryan 2014-06-24 18:35:22

-2

面对类似的问题(可能不是与jquery.js,但相同的错误描述)解决方案有点不同于上述。其实我已经在regedit中搜索了其他iexplore.exe行。我找到了其他两个,并将其更改为1,然后运行。

hkey_local_machine\software\microsoft\internet explorer\main\featurecontrol\feature_protocol_lockdown 
hkey_local_machine\software\microsoft\internet explorer\main\featurecontrol\feature_internet_shell_folders 
-2

如果您运行64位操作系统,请确保该键的值也被设置为1:HKEY_LOCAL_MACHINE\SOFTWARE\**Wow6432Node**\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_OBJECT_CACHING\\iexplore.exe

没有这个密钥,我们在Internet Explorer 11

2
function Sizzle(selector, context, results, seed) { 
    var match, elem, m, nodeType, 

    // QSA vars 
    i, groups, old, nid, newContext, newSelector; 

    // MY EDIT - this try/catch seems to fix IE 'permission denied' errors as described here: 
    // http://bugs.jquery.com/ticket/14535 

    try{ 
    document === document; //may cause permission denied 
    } 
    catch(err){ 
    document = window.document; //resets document, and no more permission denied errors. 
    } 

    if ((context ? context.ownerDocument || context : preferredDoc) !== document) { 
    setDocument(context); 
    } 

    //...... snip .........// 
} 

http://jsfiddle.net/xqb4s/

+3

您应该在答案中添加一些解释性文字。此外,我不明白你的jsfiddle如何演示任何东西 – 2014-09-08 13:46:11

+0

这有什么用? – hyde 2015-04-06 17:14:02

+1

你需要编辑你的jquery - *。js并在sizzle函数中添加try catch(导致拒绝访问的函数)。我不喜欢玩jquery文件,但它确实解决了这个问题 – David 2015-08-26 21:23:48

0

最近我遇到了这个错误。在我工作的应用程序中,我使用TinyMce文本编辑器作为我们的电子邮件编辑器。这将创建一个iframe,其中包含我需要的电子邮件编辑器对象。在看到许多关于上述错误的博客后,我试图以编程方式删除TinyMce文本编辑器对象,然后触发重定向。它工作!

1

我对IE9有这个确切的问题,事实上,它也发生在IE11中。

我的问题是,我通过http(即http://mywebsite.com)打开一个网站,我的代码中的iframe试图访问使用https的网站的一部分。这是造成错误。一旦我使用https访问网站,错误消失了。旧书签是使用http的原因,并且网站已更新为https,因此请检查您的URL。