javascript - 跳过导航在新打开的 firefox 窗口中不起作用,但在 IE 和 Chrome 中有效

标签 javascript jquery html firefox navigation

当我在 Firefox 中使用 window.open 打开一个新窗口并尝试使用跳过导航在新窗口中导航页面的不同部分时不起作用并且预览窗口被重新加载。这就是我正在做的。

<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>

最佳答案

您应该能够将以下 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> ,例如。

(Stackoverflow 有点搞乱了上面代码中的语法高亮显示,但它是有效的 js。此外,您通常不想在 HTML 中添加内联事件监听器。)

关于javascript - 跳过导航在新打开的 firefox 窗口中不起作用,但在 IE 和 Chrome 中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13507309/

相关文章:

javascript - 查看变量是否存在

javascript - 在动画 JavaScript 和 HTML 中制作幻灯片

html - LI 内的链接未覆盖整个 LI

jquery - 选择多个提交问题 - 如果不选择,则 POST 为空

javascript - Google Feed API 是否支持通过 Node.js 进行访问?

java - 使用 jquery 中 servlet 中的 json 获取不同变量上的两个数组

javascript - 我可以在 windows.location 中捕获服务器返回 false 吗?

javascript - 如何在 jQuery 中的每个单击事件中 append 文本 x 次?

javascript - 在 D3.js 中注销缩放监听器并恢复滚动能力

javascript - 为什么 'for (a of a)'可以正确迭代一个数组?