2010-12-10 47 views
30

Tôi nhận được một trang được hiển thị trong khung nội tuyến.nhận parent.location.url - iframe - từ con thành cha mẹ

Tôi cần lấy parent.location.url với js từ trang đó (trang con).

Cả hai trang web đều nằm trong các miền khác nhau.

Tôi đang cố gắng:

alert (parent.location.url)

Nhưng tôi nhận được lỗi này:

Permission denied cho http://parentdomain để có được tài sản từ Location.URL http://childdomain.

???? Có thể không?

+1

Bạn có kiểm soát cả hai miền không? nếu có, có thể. Nếu không thì không. – Alohci

Trả lời

4

Các bạn đã thử một cái gì đó như:

alert(window.top.location.href); 
+0

Tôi không có quyền kiểm soát trên trang gốc: S –

+6

Nếu bạn chỉ đang cố gắng xem liên kết giới thiệu, bạn sẽ thử một cái gì đó như: if (document.referrer! = ' ') tài liệu.viết ('Cảm ơn bạn đã ghé thăm' + document.referrer); – PriorityMark

7

Những gì bạn đang cố gắng làm là không thể thực hiện cho mỗi gia nhập. Trừ khi bạn có quyền kiểm soát việc gọi trang con của trang mẹ. Nếu bạn làm như vậy, bạn có thể gọi trang con với lệnh get trong URL của trang gốc. Vì vậy, nếu trang mẹ của bạn là http://parentpage.com thì đây là cách bạn nên gọi iFrame.

<iframe src='http://childpage.com/?parent=http://parentpage.com' /> 

Sau đó, tất cả các bạn phải làm trong trang trẻ em để có được những tài liệu tham khảo là có được chuỗi với

window.location.search //not sure of browser compatibility with this 

và trích xuất URL trang mẹ bằng cách lấy nó ra khỏi chuỗi đó. Tôi muốn cung cấp thêm chi tiết, nhưng tôi thậm chí không chắc chắn về câu hỏi đầu tiên tôi có.

+0

Tôi đã thử mọi phương pháp khác được liệt kê ở đây. Bây giờ trong năm 2015, do các vấn đề cấp phép trình duyệt khá nghiêm ngặt ngăn chặn JavaScript cho trường hợp này. Việc chuyển dữ liệu đến iFrame trong url là cách duy nhất. – FactoryAidan

2

Nó sẽ chỉ hoạt động nếu trang gốc và khung nội tuyến nằm trên cùng một tên miền. Nếu họ không thuộc cùng một tên miền, bạn có thể thử chuyển vị trí qua src, như Madison Williams đã đề xuất.

Đó có lẽ là lý do tại sao bạn đang nhận được "Permission denied ..."

1

Hãy thử:

var pathname = window.parent.location.href 
71

thử điều này:

var referrer = document.referrer; 
alert(referrer); 
+2

Cảm ơn, trong số tất cả các giải pháp được đề xuất, đây là giải pháp duy nhất cung cấp cho tôi thông tin khi khung nội tuyến nằm trên một tên miền khác với trang gọi điện. –

+0

bạn là người đàn ông chào đón :) – GianFS

+1

yêu thích giải pháp này vì lý do tên miền, nhưng nó không nhận được URL đầy đủ. Nó thiếu biến băm mà window.location sẽ trả về. – toobulkeh

2

Bạn sẽ có thể tìm thấy nó giống như điều này và tất cả các trình duyệt sẽ có thể hỗ trợ nó:

query = window.parent.location.search.substring(1); 

Bạn không nên nhận được các lỗi về quyền này, nhưng tôi có thể sai.

+3

Điều này không hoạt động trong FF18, IE9: Quyền bị từ chối – pulzarraider

1

Sử dụng postMessage để chuyển dữ liệu qua lại giữa các cửa sổ. Đó là một chút klunky, nhưng cần thiết khi có cửa sổ giao tiếp trên nguồn gốc.

+0

+1 vì đây là giải pháp duy nhất hoạt động khi sử dụng SharePoint Added Part. document.referrer không hoạt động, và thiết lập thuộc tính iframe src từ trang chủ không thể truy cập từ bên trong phần thêm vào. Tôi đã thử tất cả và cái này hoạt động hoàn hảo. Cảm ơn bạn! – zpert

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