2010-04-08 34 views
5

Tôi đang sử dụng tập lệnh sau để buộc một trang cụ thể - khi được tải lần đầu tiên - vào iFrame (bên thứ ba).Phát hiện URL với JavaScript

<script type="text/javascript"> 
    if(window.top==window) { 
     location.reload() 
    } else { 
    } 
</script> 

(Để làm rõ: 'nhúng' này được thực hiện tự động bởi hệ thống của bên thứ ba nhưng chỉ khi trang được làm mới một lần - để tạo kiểu tóc và một số lý do khác mà tôi muốn nó ở đó ngay từ đầu.)

Ngay bây giờ, tôi tự hỏi liệu tập lệnh này có thể được tăng cường theo cách có thể phát hiện URL hiện tại của tài liệu 'gốc' của nó để kích hoạt một hành động cụ thể không? Giả sử URL của trang web bên thứ ba là 'http://cgi.site.com/hp/ ...' và URL của iFrame 'http://co.siteeps.com/hp/ ...'. Có thể nhận ra sth. như thế này với JS:

<script type="text/javascript"> 
    if(URL is 'http://cgi.site.com/hp/...') { 
     location.reload() 
    } 
    if(URL is 'http://co.siteeps.com/hp/...') { 
     location.do-not.reload() resp. location.do-nothing() 
    } 
</script> 

TIA Josh

Trả lời

7
<script type="text/javascript"> 
    if(/^http:\/\/cgi.site.com\/hp\//.test(window.location)) { 
     location.reload() 
    } 
    if(/^http:\/\/co.siteeps.com\/hp\//.test(window.location)) { 
     location.do-not.reload() resp. location.do-nothing() 
    } 
</script> 

Tất nhiên, thứ hai nếu là không cần thiết vì vậy bạn chỉ có thể làm điều này:

<script type="text/javascript"> 
    if(/^http:\/\/cgi.site.com\/hp\//.test(window.location)) { 
     location.reload() 
    } 
</script> 

Những gì bạn đang làm gì ở đây là thử nghiệm window.location với cụm từ thông dụng để xem liệu nó có khớp với URL bạn muốn hay không.

Nếu bạn muốn tham chiếu URL của cha mẹ, bạn có thể sử dụng parent.location.href.

mỗi nhận xét của bạn, trong trường hợp bạn muốn làm một cái gì đó khác bạn có thể làm một cái gì đó như thế này:

<script type="text/javascript"> 
    if(/^http:\/\/cgi.site.com\/hp\//.test(window.location)) { 
     location.reload() 
    } 
    else if(/^http:\/\/co.siteeps.com\/hp\//.test(window.location)) { 
     //do something else 
    } 
</script> 

Nếu bạn đang làm trong trường hợp khác, đó là một cách hiệu quả một NOP (không hoạt động), do đó bạn thậm chí không cần người khác ở đó (hoặc khác nếu) vì nó sẽ là một khối trống.

+0

hi vivin! thx cho trả lời ngay lập tức của bạn! Tôi nên định nghĩa gì thay vì trả lời 'location.do-not.reload(). location.do-nothing() '? – josh

+0

là nếu ... nếu ... có thể với js? hay tôi cần một 'người khác'? – josh

+0

Giả sử tôi hiểu luồng logic của bạn chính xác, bạn * chỉ * muốn thực hiện tải lại nếu URL khớp với 'http: // cgi.site.com/hp'. Nếu đó là trường hợp, bạn không cần một người khác vì bạn thực sự không làm bất cứ điều gì. Tất nhiên, nếu bạn muốn làm điều gì đó * khác * thì bạn có thể sử dụng 'else if (...) {...}' –

2

Bạn có thể sử dụng window.location.href để nhận URL thực hiện so sánh chuỗi. Nếu bạn đang ở trong iframe và cần biết URL của bố mẹ parent.location.href sẽ giúp bạn điều đó.

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