2012-12-27 36 views
9

同樣的問題here但我需要去當地的URL在Firefox轉到本地網址使用JavaScript

我試着用這樣的代碼

var url = "file:///E:/Test/Test.htm"; 
window.location.href = url; 

但ID沒有工作。試圖去window.location = url;,並試圖與url = "file://E:/Test/Test.htm";(雙「/」而不是三倍「/」),仍然無法正常工作。

感謝

回答

11

當我試試這個:

window.location.href = "file:///C:/Users/Cerbrus/Documents/SomeFile.js" 

(是的,這是一個有效的路徑。)

鉻拋出我這個錯誤:

Not allowed to load local resource: file:///C:/Users//Documents/File.js

這是因爲JavaScript無權訪問本地個文件(由於它被沙箱化),並且您正在使用JavaScript設置新的網址。
「SandBoxed」意味着一項技術限制了(或沒有)一定範圍之外的訪問權限。在瀏覽器的情況下,這意味着頁面上運行的代碼無法訪問系統上的文件(否則,只需查看用戶的文件系統就可以輕鬆「竊取」數據)。

然而

說,我有2個文件:

C:/Test/Test.htm
C:/Test/Test1.htm

Test.htm只包含這個:

<script> 
    window.location = "file:///C:/Test/Test1.htm"; 
</script> 

這實際上會重定向到Test1.htm,因爲目標文件與源文件所在的域相同。

+0

(旁註:我並不完全相信「[同源政策](https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript)」在這裏不起作用,因爲我們'重新也改變協議爲'文件:'。) – Cerbrus

+2

真棒回答!所以這個腳本不能從託管的網頁上運行,但它可以從本地的htm文件運行。但Bookmarklet怎麼樣?我需要一個小書籤中的腳本。沒有爲我工作,但Bookmarkets是本地的,這是什麼原因?並感謝其他回答的人。 – BearCode

+0

這似乎並不奏效,@BearBear:'javascript:(function(){window.location =「file:/// C:/Test/Test1.htm」;}());' < - 這給出了同樣的錯誤。我在猜測我提到的Test.htm示例,因爲源文件已經在本地了,所以'沙箱中包含'file:/ '。 – Cerbrus

5

我猜它不允許從JavaScript

加載本地資源除非你有一個本地的HTTP服務器上運行:

var url = "http://localhost/MySite/Default.aspx"; 
window.location.href = url; 

它將工作

1

你無法從本地系統訪問文件。由於瀏覽器工作在沙箱模式,並且您不能破壞沙盒併到達本地文件系統,因爲它會違反安全性。要麼嘗試使用AJAX請求直接加載,否則由於沙箱限制,您嘗試執行的操作不可行,也不符合安全策略。

+0

是什麼讓你認爲一個AJAX請求可以讀取本地文件? – Cerbrus

+0

如果我打開html文件:/// C:/Users/arun.ak/Desktop/somting.html同樣的規則適用? –

+0

@ArunKillu:是的。 JavaScript無法從其他域訪問該文件。 – Cerbrus

-4
window.open(url); // here url can be anything 
+2

你測試過了嗎?它不起作用。 – Cerbrus