2012-05-19 38 views
0

自從我上次將<frameset>輸入到我的編輯器中已經很多年了,但今天我發現自己正在做這件事。幀間JavaScript通信? (在同一個域名)

我正在寫一個利用框架的小工具。在一個框架中,我有一個帶有文本輸入的文檔,而在另一個框架中,我有一個<ul>的項目。當我在一個框架中輸入文本字段時,我需要在另一個框架中顯示/隱藏<ul>中的項目。從歷史上看,我記得這會工作得很好。但今天嘗試它,Chrome的拋出一個搖擺:

不安全JavaScript嘗試與URL訪問文件框架:從框架//localhost/Users/chris/multi_yardoc/projects/list.html與URL文件://本地主機/用戶/克里斯/ multi_yardoc /項目/ menu.html。域,協議和端口必須匹配。

<script> 
    $(document).ready(function() { 
    $("#search-box").bind("keyup", function() { 
     $("li[class*='object-']", top.frames["list"].document).hide(); 
     $("li[class*='object-" + $(this).val() + "']", top.frames["list"].document).show(); 
    }); 
    }); 
</script> 

的錯誤是沒有意義的我,作爲域,協議和端口的所有比賽。我如何實現這一目標?

回答

1

Chrome對於文件協議URL具有特殊的相同域策略。看到Unsafe JavaScript attempt to access frame in Google Chrome

+0

Bummer,這太糟糕了...這是一個「本地運行」的HTML文件集:(也許如果我把所有的JS移動到最上面的窗口,將工作,謝謝指出這一點!) – d11wtq

+0

I通過更新框架的src來添加hash-bang,然後我只是在另一個框架中觀察對'location.hash'的更改。它有一個奇怪的副作用,使瀏覽器刷新按鈕閃爍,但它工作得很好。 – d11wtq