2012-12-27 27 views
9

Cùng câu hỏi như here nhưng tôi cần phải đi đến địa phương URL trong FirefoxTới URL địa phương với Javascript

tôi đã cố gắng với các mã như

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

nhưng id đã không làm việc. Đã cố gắng để đi với window.location = url; và cũng đã thử với url = "file://E:/Test/Test.htm"; (đôi "/" thay vì ba "/") và vẫn không hoạt động.

Cảm ơn

Trả lời

11

Khi tôi cố gắng này:

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

(Vâng, đó là một đường dẫn hợp lệ.)

Chrome ném cho tôi lỗi này:

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

Đây là vì JavaScript không có quyền truy cập vào địa phương tệp (do nó được sandbox), và bạn đang thiết lập url mới bằng JavaScript.
"SandBoxed" có nghĩa là một công nghệ đã hạn chế (hoặc không) truy cập bên ngoài một tập hợp giới hạn nhất định. Trong trường hợp trình duyệt, điều này có nghĩa là mã chạy trên trang không thể truy cập các tệp trên hệ thống của bạn (Nếu không, sẽ dễ dàng "ăn cắp" dữ liệu, bằng cách chỉ xem xét hệ thống tệp của người dùng).

Tuy nhiên,

Nói, tôi có 2 file:

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

Test.htm chỉ chứa này:

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

Điều này sẽ thực sự chuyển hướng đến Test1.htm, vì các tập tin mục tiêu là trên cùng một tên miền với vị trí của tệp nguồn.

+0

(Sidenote: Tôi không hoàn toàn bị thuyết phục rằng "[Chính sách gốc tương tự] (https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript)" không đóng vai trò ở đây, vì chúng tôi ' cũng đang thay đổi giao thức thành 'tệp:'.) – Cerbrus

+2

Câu trả lời thú vị! Vì vậy, kịch bản không hoạt động từ một trang web lưu trữ nhưng nó hoạt động từ một tập tin htm địa phương. Nhưng làm thế nào về bookmarklets? Tôi cần kịch bản của tôi trong một bookmarklet. Đã không làm việc cho tôi nhưng Bookmarlkets là địa phương, lý do cho điều đó là gì? Và nhờ những người khác cũng trả lời. – BearCode

+0

Điều đó dường như không hoạt động, hoặc là @BearBear: 'javascript: (function() {window.location =" file: /// C: /Test/Test1.htm ";}());' < - Điều đó cho cùng một lỗi. Tôi đoán ví dụ 'Test.htm' mà tôi đã đề cập đến, vì tệp nguồn đã có sẵn cục bộ, do đó, tệp'::/ 'được bao gồm trong hộp cát. – Cerbrus

5

Tôi đoán nó không được phép tải tài nguyên địa phương từ javascript

Trừ khi bạn có một máy chủ http địa phương chạy:

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

Nó sẽ làm việc

1

Bạn không thể truy cập tệp từ hệ thống cục bộ. Vì Trình duyệt hoạt động ở chế độ hộp cát và bạn không thể vi phạm hộp cát và truy cập vào hệ thống tệp cục bộ do hệ thống này vi phạm bảo mật. Hoặc cố gắng tải trực tiếp bằng cách sử dụng một yêu cầu AJAX khác những gì bạn đang cố gắng làm là không thể do hạn chế sandbox và cũng không tuân thủ các chính sách bảo mật.

+0

Điều gì khiến bạn nghĩ rằng yêu cầu AJAX có thể đọc tệp cục bộ? – Cerbrus

+0

nếu đang mở tệp html dưới dạng: /// C: /Users/arun.ak/Desktop/somting.html cùng một quy tắc sẽ áp dụng? –

+0

@ArunKillu: Có. JavaScript không thể truy cập tệp đó từ một miền khác. – Cerbrus

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

Bạn đã thử nghiệm điều này chưa? Nó không hoạt động. – Cerbrus

Các vấn đề liên quan