Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html iframe中的锚定链接不起任何作用_Html_Iframe_Anchor - Fatal编程技术网

Html iframe中的锚定链接不起任何作用

Html iframe中的锚定链接不起任何作用,html,iframe,anchor,Html,Iframe,Anchor,是否可以在滚动div中有一个非滚动的iFrame,并且iFrame中的锚链接可以正常工作?iFrame中的锚链接应该滚动到iFrame中的位置,我不需要/希望它们指向父页面上的元素 下面是我的JSFIDLE,其中有一个简单的示例: 以及它的代码: <div style="width: 100%; height: 300px; overflow: auto;"> <iframe style="width: 100%; height: 2000px;" src="http://w

是否可以在滚动div中有一个非滚动的iFrame,并且iFrame中的锚链接可以正常工作?iFrame中的锚链接应该滚动到iFrame中的位置,我不需要/希望它们指向父页面上的元素

下面是我的JSFIDLE,其中有一个简单的示例:

以及它的代码:

<div style="width: 100%; height: 300px; overflow: auto;">
<iframe style="width: 100%; height: 2000px;" src="http://www.hypergurl.com/anchors.html" scrolling="no"></iframe>
</div>

我与我的示例中使用的Hypercurl.com链接没有关联,这只是我能找到的第一个带有锚定id/名称语法链接的页面示例

如果加载JSFIDLE并单击iFrame内的“跳转到底部”链接,则它不会执行任何操作(使用Firefox19.0.2进行测试)。当测试各种页面时,它在FireFox中永远不起作用,在Chrome中,它有时在第一次点击时就起作用,但如果你向上滚动并再次点击,它就不起作用了。在IE8中,它大部分时间工作(滚动)

如果我让iFrame本身拥有滚动条(remove Scrolling=“no”),则滚动始终正常工作。不过,这对我来说不是一个实用的解决方案,因为我想滚动框架之外的内容。在我的真实代码中,我动态设置iFrame的高度以填充其内容,这样它看起来更像我页面上的内容

关于我为什么需要这样做的其他信息:

我正在创建一个基于web的电子邮件客户端,到目前为止,如果我在iframe中显示电子邮件的HTML主体,与试图在页面中的表格单元格或div中显示相比,问题似乎最少。我想这些类型的链接工作。我确实对内容有一些控制权,它来自我的服务器,我可以对其进行一些修改(但不想对其进行太多的攻击)。例如,我已经修改了在新窗口中打开的所有链接(但不是以#开头的链接,所以这不是我的问题)

我知道GMail不使用iFrames,但我的XFINITY(通过Comcast cable)基于web的电子邮件客户端使用iFrames,他们设法让这些功能正常工作(但到目前为止还没有弄清楚它们都在做些什么)。

查看这篇文章:

如果您的iframe具有不同的域,那么您将无法使用javascript解决方案来解决此问题,但是如果是,那么您可以将target=“\u parent”属性添加到iframe中的所有锚

var iframe = document.getElementById('iframeId');
var doc = (iframe.contentDocument)? iframe.contentDocument: iframe.contentWindow.document;

var anchors = doc.getElementsByTagName('a');
for (var i = 0; i < anchors.length; i++)
    anchors[i].target = '_parent';
var-iframe=document.getElementById('iframeId');
var doc=(iframe.contentDocument)?iframe.contentDocument:iframe.contentWindow.document;
var archors=doc.getElementsByTagName('a');
对于(var i=0;i
我最近在这个库中添加了代码,以解决iFrame中锚链接的所有问题

它拦截所有页面内导航请求,并将父页面滚动到正确位置。如果它在iFrame中找不到锚,它会将锚冒泡到父页面并在那里查找。

可能与此相关,但我在web工具包浏览器中也看到了这一点,而不仅仅是Mozilla。另外,我也看到过没有这个问题的页面。但是,那些有效的方法确实是从JavaScript加载iFrame内容,而不是通过src属性,所以可能只有在我将设计更改为该属性时才有效(这需要大量工作)?