我已经构建了一个基本的数据输入应用程序,允许用户浏览iframe中的外部内容并从同一页面快速输入数据.其中一个数据变量是URL.理想情况下,我希望能够使用javascript将iframe当前网址加载到文本框中.我现在意识到,由于安全问题,这不会发生.
有人在服务器端做过什么吗?或者知道浏览器控件中的任何.Net浏览器.最终目标是为用户提供一种简单的方法来提取他们在iframe中查看的页面的网址.它不一定是iframe,浏览器中的浏览器将是理想的.
谢谢,亚当
我没有在Firefox 3的一些测试对比的价值.src
,并.documentWindow.location.href
在iframe
.(注意:在Chrome中documentWindow
调用contentDocument
它,因此不会.documentWindow.location.href
在Chrome中使用.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
我没有测试任何其他浏览器.
希望能帮助到你!
document.getElementById('iframeID').contentWindow.location.href
您根本无法访问跨域iframe位置.