2010-10-18 40 views
5

Tôi có một iframe tôi đang sử dụng để lấy một số nội dung được lưu trữ bởi nhà cung cấp bên thứ 3 vào trang web của chúng tôi. Chúng tôi đang cố gắng xác định chiều cao của nội dung đó để điều chỉnh chiều cao iframe nhưng tôi nhận được lỗi tập lệnh chéo trang web. Tôi không biết rằng các tên miền phụ được tính là một trang web chéo. Có cách nào đó xung quanh điều này mà không cần phải giữ chúng trên phù hợp với tiểu lĩnh vực?Viết kịch bản trang web chéo trên cùng một tên miền, các tên miền phụ khác nhau

Để tham khảo, tiếp thị hàng tuần của chúng tôi được nhà cung cấp bên thứ ba lưu trữ trong flash nhưng với tên miền phụ chúng tôi có thể chuyển hướng đến họ trong khi vẫn giữ người dùng trên miền của chúng tôi cho mục đích cookie.

Trả lời

4

Từ một trong các tên miền phụ của bạn, bạn có thể (với một số ngoại lệ) đặt tên miền để cho phép truy cập rộng hơn vào các miền phụ khác trong cùng miền chính.

Hãy xem trang này: http://www.tomhoppe.com/index.php/2008/03/cross-sub-domain-javascript-ajax-iframe-etc/

+0

Nhà cung cấp mà tôi đang làm việc không đồng ý với điều này ngay lập tức, nhưng tôi đã thử nghiệm và làm việc để tôi biết điều này ít nhất cũng hoạt động. Cảm ơn! – XOPJ

3

Ngoài ra hãy xem tại cross window messaging

trang đầu tiên này là người gửi - nó gọi postMessage (gửi tin nhắn văn bản) và cũng có thể giữ iframe trong đó cửa sổ nhận được giữ.

<iframe src="http://dev.jquery.com/~john/message/" id="iframe"></iframe> 
<form id="form"> 
    <input type="text" id="msg" value="Message to send"/> 
    <input type="submit"/> 
</form> 
<script> 
window.onload = function(){ 
     var win = document.getElementById("iframe").contentWindow; 
     document.getElementById("form").onsubmit = function(e){ 
       win.postMessage(document.getElementById("msg").value); 
       e.preventDefault(); 
     }; 
}; 
</script> 

Trang tiếp theo là người nhận - nó có một người biết lắng nghe sự kiện ràng buộc mà đồng hồ cho các tin nhắn được truyền cho nó và bơm chúng vào DOM.

<b>This iframe is located on dev.jquery.com</b> 
<div id="test">Send me a message!</div> 
<script> 
document.addEventListener("message", function(e){ 
     document.getElementById("test").textContent = 
       e.domain + " said: " + e.data; 
}, false); 
</script> 
+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. – VMAtm

+0

Chắc chắn .. Nhưng ở đây tôi phải sao chép rất nhiều từ trang để hiển thị ví dụ. – mplungjan

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