我构建了一个基本的数据输入应用程序,允许用户浏览 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/