Mặc dù bạn src = encodeURI
nên làm việc, tôi đã đi một con đường khác:
var iframe = document.createElement('iframe');
var html = '<body>Foo</body>';
document.body.appendChild(iframe);
iframe.contentWindow.document.open();
iframe.contentWindow.document.write(html);
iframe.contentWindow.document.close();
Vì điều này không có hạn chế tên miền x và được thực hiện hoàn toàn thông qua iframe
tay cầm, bạn có thể truy cập và thao tác nội dung của khung sau này. Tất cả những gì bạn cần chắc chắn là, nội dung đã được hiển thị, sẽ (tùy thuộc vào loại trình duyệt) bắt đầu trong / sau khi lệnh .write được ban hành - nhưng không được thực hiện khi close()
được gọi.
Một cách tương thích 100% để thực hiện một cuộc gọi lại có thể là cách tiếp cận này:
<html><body onload="parent.myCallbackFunc(this.window)"></body></html>
Iframes có sự kiện onload, tuy nhiên. Đây là một cách tiếp cận để truy cập html bên trong dưới dạng DOM (js):
iframe.onload = function() {
var div=iframe.contentWindow.document.getElementById('mydiv');
};