javascript - 如何更改 IFRAME location.hash 值而不让父级跳转到 IFRAME?

标签 javascript html iframe

我成功更改了 IFRAME 位置的哈希值 ( as a part of externalizing navigation through Google Document Viewer ),但是我不知道如何在触发函数时阻止父级跳到 IFRAME 的顶部。

有人有 JS/jQuery 解决方案吗?我找到了this Q&A (也在下面),但解决方案似乎很脏并且容易出现问题。想法?

var yScroll=document.body.scrollTop;
window.location.hash = id;
document.body.scrollTop=yScroll;

另外,作为引用,我正在使用的函数是这样的:

function st_go_to_pg( pg ){
    if( pg >= 0) jQuery('.gde-frame').first()[0].contentWindow.location.hash=':0.page.'+pg;
}

最佳答案

由于看起来没有人有比我在最初问题中包含的更好的解决方案,因此我想我会将其作为答案发布。

在不更改父页面的 y 滚动位置的情况下更改嵌入文档内的页面的结果函数如下:

function go_to_pg( pg ){
    var y=document.body.scrollTop; // save parent y to undo jump to top of IFRAME
    if( pg >= 0) jQuery('.gde-frame').first()[0].contentWindow.location.hash=':0.page.'+pg;
    document.body.scrollTop=y; // reset y
}

关于javascript - 如何更改 IFRAME location.hash 值而不让父级跳转到 IFRAME?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14533361/

相关文章:

javascript - 在单击的(网格的)单元格内放置图像或 css 样式图标

Internet Explorer 浏览器版本用户代理的 Javascript 重定向?

html - CSS:布置带有滚动侧边栏的固定标题

javascript - 通过获取 scrollHeight (javascript) 调整 iFrame 的大小以适应内容

javascript - 是否可以使用 Javascript 检索 iframe 的*完整* HTML 页面源代码?

javascript - 使用 jquery 访问 gridview 内的隐藏字段并更新它?

javascript - flexslider 和 skrollr 背景附件 : fixed; will let the slides disappear

javascript - jquery中计算表每一行唯一

html - div 不限制自己在父级内

python - 使用 Selenium 和 BeautifulSoup 提取 iFrame 内容