Tôi đang gặp khó khăn trong việc tìm cách truy cập trang được tải trong khung nội tuyến từ trang bên ngoài. Cả hai trang đều là tệp cục bộ và tôi đang sử dụng Chrome.Sử dụng khung nội tuyến có tệp cục bộ trong Chrome
Tôi có trang bên ngoài và nhiều trang bên trong. Trang bên ngoài phải luôn hiển thị tiêu đề trang cho trang bên trong (nó có ý nghĩa trong ứng dụng của tôi, có lẽ ít hơn trong ví dụ được rút gọn này). Điều này làm việc mà không có bất kỳ vấn đề trong AppJS, nhưng tôi đã được yêu cầu để làm cho ứng dụng này hoạt động trực tiếp trong trình duyệt. Tôi nhận được lỗi "Bị chặn khung có nguồn gốc" null "khi truy cập khung có gốc" null ". Giao thức, tên miền và cổng phải khớp.".
Tôi nghĩ rằng điều này là do chính sách gốc của Chrome liên quan đến tệp cục bộ, nhưng điều đó đã không giúp tôi khắc phục sự cố trực tiếp. Tôi có thể giải quyết vấn đề trong ví dụ được rút gọn này bằng cách sử dụng phương thức window.postMessage trên mỗi Ways to circumvent the same-origin policy. Tuy nhiên, vượt xa ví dụ này, tôi cũng muốn thao tác DOM của trang bên trong từ trang bên ngoài, vì điều này sẽ làm cho mã của tôi sạch hơn nhiều - vì vậy việc đăng tin nhắn sẽ không thực hiện được công việc.
Outer Trang
<!DOCTYPE html>
<html>
<head>
<meta name="viewport">
</head>
<body>
This text is in the outer page
<iframe src="html/Home.html" seamless id="PageContent_Iframe"></iframe>
<script src="./js/LoadNewPage.js"></script>
</body>
</html>
Nội Trang
<!DOCTYPE html>
<html>
<head>
<title id="Page_Title">Home</title>
<meta name="viewport">
</head>
<body>
This text is in the inner page
</body>
</html>
Javascript
var iFrameWindow = document.getElementById("PageContent_Iframe").contentWindow;
var pageTitleElement = iFrameWindow.$("#Page_Title");
mỗi Is it likely that future releases of Chrome support contentWindow/contentDocument when iFrame loads a local html file from local html file?, tôi đã cố gắng tung ra Chrome với cờ
--allow-file-access-from-files
Nhưng không có thay đổi trong kết quả.
mỗi Disable same origin policy in Chrome, tôi đã cố gắng tung ra Chrome với cờ
--disable-web-security
Nhưng một lần nữa không có thay đổi trong kết quả.
mỗi What does document.domain = document.domain do?, tôi đã có tất cả các trang chạy lệnh
document.domain = document.domain;
Điều này dẫn đến lỗi "bị chặn một khung với nguồn gốc 'null' truy cập vào một khung với nguồn gốc 'null'. Khung yêu cầu truy cập đặt "document.domain" thành "", nhưng khung được truy cập không phải là cả hai. Phải đặt "document.domain" thành cùng một giá trị để cho phép truy cập. "
Để giải trí, tôi có cả hai trang chạy lệnh
document.domain = "foo.com";
Điều này dẫn đến lỗi "Lỗi không bắt buộc: SecurityError: Ngoại lệ DOM 18".
Tôi đang lúng túng. Bất kỳ sự giúp đỡ từ những người hiểu biết nhiều hơn sẽ là tuyệt vời! Cảm ơn!
Lưu ý rằng nếu bạn đã cài đặt Python, bạn có thể áp dụng cùng một phương pháp mà bạn đề xuất ở đây và [thiết lập một máy chủ Web một dòng] (http://stackoverflow.com/a/532710/710446): 'python -m SimpleHTTPServer [ cổng] ' – apsillers
Chà, điều đó thực sự tốt đẹp. Đã không thấy điều đó. Tôi đã thử nghiệm nó trên cùng một mã nguồn và nó hoạt động, nhưng chậm hơn so với thể hiện. Để được lên và chạy nhanh như vậy là khá tuyệt vời và chắc chắn là một thương mại để được xem xét. – Brian
Với Python 3, hãy sử dụng phương thức này thay thế: 'python -m http.server [port]' – taleinat