【问题标题】:Skip Navigation is not working in new opened window of firefox but it works in IE and Chrome跳过导航在 Firefox 的新打开窗口中不起作用,但在 IE 和 Chrome 中有效
【发布时间】:2012-11-22 06:56:27
【问题描述】:

当我在 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>

【问题讨论】:

标签: javascript jquery html firefox navigation


【解决方案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>`

浏览器似乎将&lt;/script&gt; 标签解释为整个“弹出式书写”脚本的结束标签。 这可以通过剪切字符串中的&lt;/script&gt; 标记来规避,如下所示。

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

现在,您只需设置 &lt;a&gt; 的样式,使其看起来像您可以单击它,或者将其替换为 &lt;button&gt;,例如。

(Stackoverflow 有点弄乱了上面代码中的语法突出显示,但它是有效的 js。此外,您通常不希望在 HTML 中添加内联事件侦听器。)

【讨论】:

  • 不,它在 Firefox 中不起作用。您可以在 Firefox 中查看您的小提琴示例。每次我点击“嗨”,而不是将焦点设置为“来这里”,页面被重新加载到存在“显示日期”按钮的较早窗口。它在 IE 和 chrome 中运行良好,但在 Firefox 中存在问题
  • 这似乎是浏览器问题。 Chrome 和 IE(!!!) 都按预期运行。我确实在 Firefox 中看到了同样的问题。添加onclick='return false' or onclick='preventDefault' 只会阻止链接执行任何操作。
  • 什么是解决方案?我不想使用单独的页面。
  • 我不太清楚你的意思,这(我回答中的最后一个块)与你的示例代码相同,只有按钮现在也可以在 firefox 中使用。
  • 我无法做到这一点。你能在提琴手中显示这个吗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 2011-05-03
相关资源
最近更新 更多