强制iframe滚动到Firefox中由querystring传递的锚点

时间:2017-09-14 09:24:58

标签: javascript jquery html firefox iframe

我有一个php页面A,在这个页面中我有一个iframe,其中包含<iframe id="iframe_book" name="iframe_book" src="book.html"></iframe>

的源(属性src =“”)

“book.html”是一个页面,其中包含大量文本,并在每个文本块之前包含html锚点(<a name="anchor-1"></a>

我有另一个php页面B,其表单将一个变量(#anchor-1)(即锚名称)传递给第A页。

内页A我将此变量传递给iframe,编辑iframe的来源:<iframe id="iframe_book" name="iframe_book" src="book.html#anchor-1"></iframe>

所以我希望iframe中的页面book.html会滚动到传递的锚点,就像通常的html页面一样。 我希望这适用于所有浏览器;使用Chrome工作(iframe滚动到锚点),但Firefox没有。

问题是:如何强制iframe滚动到Firefox中的querystring传递的锚点,可能使用javascript或jquery?

我找到了强制使用iframe页面“book.html”内部链接的锚点的解决方案,但不是我的查询字符串传递的锚点的情况。

Firefox问题: https://bugzilla.mozilla.org/show_bug.cgi?id=638598

强制使用iframe页面内有链接的锚点: http://matthewmanela.com/blog/making-linking-between-anchors-in-an-iframe-work-in-firefox-11-and-above/

1 个答案:

答案 0 :(得分:0)

我决定在iframe标记之后将此脚本添加到页面A中。

<?php
        //#anchor-1
        $anchor = isset($_REQUEST['anchor']) ? $_REQUEST['anchor'] : '';
        if( $anchor != '' ){
?>
        <script type="text/javascript" language="Javascript">
        function scroll_anchor(anchor){
        parent.frames['iframe_book'].location.href = "book.html?"+anchor+"";
        }
        window.onload = function(){
            <?php echo "scroll_anchor('".$anchor."');"; ?>
        }
        </script>
<?php } ?>