asp.net - 如何获取 iframe 的当前位置?

标签 asp.net javascript dom iframe

我构建了一个基本的数据输入应用程序,允许用户浏览 iframe 中的外部内容并从同一页面快速输入数据。数据变量之一是 URL。 理想情况下,我希望能够使用 javascript 将 iframe 当前 url 加载到文本框中。我现在意识到,由于安全问题,这不会发生。

有人在服务器端做过什么吗?或知道浏览器控件中的任何 .Net 浏览器。最终目标是为用户提供一种简单的方法来提取他们在 iframe 中查看的页面的 url 它不一定必须是 iframe,浏览器中的浏览器将是理想的。

谢谢, 亚当

最佳答案

我在 Firefox 3 中做了一些测试,比较了 iframe.src.documentWindow.location.href 的值。 (注意:documentWindow 在 Chrome 中称为 contentDocument,因此在 Chrome 中它不是 .documentWindow.location.href,而是 。 contentDocument.location.href.)

src 始终是在没有用户交互的情况下加载到 iframe 中的最后一个 URL。即,它包含 URL 的第一个值,或您在包含窗口中使用 Javascript 设置的最后一个值:

document.getElementById("myiframe").src = 'http://www.google.com/';

如果用户在 iframe 内导航,您将无法再使用 src 访问 URL 的值。在前面的例子中,如果用户离开 www.google.com 而你做了:

alert(document.getElementById("myiframe").src);

你仍然会得到“http://www.google.com”。

documentWindow.location.href 仅在 iframe 包含与包含窗口位于同一域中的页面时可用,但如果它可用,它始终包含 URL 的正确值,即使用户在 iframe 中导航。

如果您尝试访问 documentWindow.location.href(或 documentWindow 下的任何内容)并且 iframe 所在的页面不属于包含窗口,它将引发异常:

document.getElementById("myiframe").src = 'http://www.google.com/';
alert(document.getElementById("myiframe").documentWindow.location.href);
Error: Permission denied to get property Location.href

我没有测试过任何其他浏览器。

希望对您有所帮助!

关于asp.net - 如何获取 iframe 的当前位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44359/

相关文章:

javascript - 使用 jquery 或 JS 填充 Html.DropDownList

javascript - 如何在 Javascript 中识别节点列表中的标签?

javascript - div 向左浮动导致溢出

c# - ASP.NET 用户控件作为 FilterParameter

javascript - 无法在 JavaScript 中隐藏表单中的元素?

javascript - 隐藏/显示多达 100 个 DOM 元素的最有效方法?

java - 使用 sax、stax 或 DOM 将 XML 转换为 java 中的数据结构

c# - autogeneratecolumns=true 时如何实现 wrap 属性?

c# - 如何将 CSV 中的列映射到 C# 中的类属性?

javascript - 如何检查一个类是否存在于一个div元素的数组中-Extjs3