我有一个php页面A,在这个页面中我有一个iframe,其中包含<iframe id="iframe_book" name="iframe_book" src="book.html"></iframe>
“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/
答案 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 } ?>