Sự cố này có thể được giải quyết dễ dàng bằng cách sử dụng một lần ghi .htaccess.
Demo:
A. Tạo một thư mục có tên là "iframeContent /" trên SERVER 1.
B. Đặt trong thư mục đó một file có tên index.php chứa:
<html>
<head></head>
<body>
<script type="text/javascript">
parent.check();
</script>
</body>
</html>
Đây là nội dung của iFrame. Nó sẽ gọi một hàm trong một phụ huynh.
C. Tạo một thư mục có tên là "iframeTesting_without-htaccess /" trên SERVER 2.
D. Nơi trong thư mục đó một file có tên chỉ mục.php chứa:
<html>
<head></head>
<body>
<script type="text/javascript">
function check() {
alert("hello");
}
</script>
<iframe id="sidebnrId" name="sidebnr"
src="PATH-ON-SERVER-1/iframeContent/" frameborder="0"
height="500px" width="600px" scrolling="no"></iframe>
</script>
</body>
</html>
này chỉ đơn giản là nội dung của cửa sổ cha mẹ. Chỉ cần lưu ý rằng nội dung iFrame nằm trên một máy chủ khác (vì trên SERVER 1).
E. Truy cập "PATH-ON-SERVER-2/iframeTesting_without-htaccess /" với trình duyệt web -> không có gì xảy ra: iframe không có quyền truy cập vào chức năng của cha mẹ.
đây là cách bạn có thể giải quyết VẤN ĐỀ
F. Tạo một thư mục có tên "iframeTesting_with-htaccess /" trên SERVER 2.
G. Đặt trong thư mục đó một file có tên index.php chứa:
<html>
<head></head>
<body>
<script type="text/javascript">
function check() {
alert("hello");
}
</script>
<iframe id="sidebnrId" name="sidebnr"
src="content-iframe/" frameborder="0"
height="500px" width="600px" scrolling="no"></iframe>
</script>
</body>
</html>
lần này iFrame không trỏ nữa trực tiếp đến con trên SERVER 1 nhưng đến thư mục có nội dung trung gian "content-iframe /" nằm trên cùng một máy chủ (SERVER 2).
H. Đặt trong thư mục đó một tập tin .htaccess chứa:
Options +FollowSymLinks
RewriteEngine On
RewriteBase/
RewriteRule ^content-iframe/$ PATH-ON-SERVER-1/iframeContent/ [R,NC,P]
Vai trò của tập tin đó là để chuyển hướng bất kỳ truy cập vào các thư mục do tưởng tượng đến nội dung trên SERVER 1.
I. Hãy thử lại, truy cập "PATH-ON-SERVER-2/iframeTesting_with-htaccess /" bằng trình duyệt web. Lần này nó sẽ hoạt động. Tôi hy vọng nó đã giúp :-)
Bài đăng này (http://stackoverflow.com/questions/5477324/iframe-calling-parent-javascript) cung cấp một giải pháp cực kỳ đơn giản. – craned