2012-11-22 12 views
3

當我打開一個新窗口使用window.open在Firefox中,並嘗試瀏覽使用跳過導航的新窗口頁面的不同部分不工作,預覽窗口重新加載。這就是我正在做的事情。跳過導航不工作在Firefox的新打開的窗口,但它適用於IE和Chrome

<html> 
<head> 
    <script> 
    function openWindow() 
     { 
      var win = window.open("","_blank"); 
      win.document.write("<!DOCTYPE html><html><head></head><body><a href='#rajeev'>hi</a><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><div id='rajeev'>To Come Here</div></html>"); 
      win.document.close(); 
     } 
    </script> 
</head> 
<body> 
    <button type="button" onclick="openWindow()">Display Date</button> 
</body> 
</html> 
+0

@Quentin:這裏是小提琴http://jsfiddle.net/drwkm/ – defau1t

回答

1

你應該能夠添加的,而不是哈希以下的onclick代碼,您鏈接,:

onclick='$(document).scrollTop($(\"#rajeev\").offset().top);' 
// Escaped the quotes since it will be placed in a document.write(""); 

你需要導入的jQuery在彈出的代碼,但如果我只是用這樣的:

`win.document.write("<script src='http://code.jquery.com/jquery-1.8.2.js' type='text/javascript'></script>` 

的瀏覽器似乎解釋</script>標籤作爲整個「彈出式寫作」腳本結束標記。 這可以通過切斷字符串中的</script>標籤來規避,如下所示。

This code對我的作品在Firefox和Chrome:

<html> 
    <head> 
     <script> 
      function openWindow() { 
       var win = window.open("","_blank"); 
       win.document.write("<!DOCTYPE html><html><head><script src='http://code.jquery.com/jquery-1.8.2.js' type='text/javascript'></scr"); 
       // Split up the </script> tag. 
       win.document.write("ipt></head><body><a onclick='$(document).scrollTop($(\"#rajeev\").offset().top);'>hi</a><br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br><div id='rajeev'>To Come Here</div></html>"); 
       win.document.close(); 
      } 
     </script> 
    </head> 
    <body> 
     <button type="button" onclick="openWindow()">Display Date</button> 
    </body> 
</html>​ 

現在,你只需要風格的<a>,使它看起來像你可以單擊它,或用<button>取代它,例如。

(。#2有點打亂了語法在上面的代碼高亮,但它是有效的JS此外,你通常不希望在你的HTML內嵌添加事件偵聽器)

+0

不,它不是在Firefox中工作。你可以在Firefox中檢查你的小提琴示例。每次我點擊「嗨」,將設置焦點置於「來這裏」,頁面被重新加載到更早的窗口,其中「顯示日期」按鈕存在。它在IE和Chrome中工作正常,但在Firefox中有問題 –

+0

這似乎是一個瀏覽器問題。 Chrome和IE(!!!)的行爲如預期。我確實在Firefox中看到了同樣的問題。添加'onclick ='返回false'或onclick ='preventDefault'只會阻止鏈接做任何事情。 – Cerbrus

+0

什麼是解決方案?我不想使用單獨的頁面。 –

相關問題