我在下面找到了用于创建iframe的代码段:
我只想在http://www.host.com
加载文字内容,并使用display:none
背景:
我需要一种有效的方法来解析favicon位置。并非所有网站都有默认位置。例如<link rel="SHORTCUT ICON" href="../images/logo_small.ico" />
。
因此我需要的只是文字内容。 PHP有一个执行此操作的函数(file_get_contents
),但我想在客户端执行此操作。
以下是mdn documentation on iframe
对于服务器端PHP使用file_get_contents.
function makeFrame() {
ifrm = document.createElement("IFRAME");
ifrm.setAttribute("src", "http://www.host.com");
ifrm.style.width = 640+"px";
ifrm.style.height = 480+"px";
document.body.appendChild(ifrm);
}
Delicious Bookmarklet的例子:
javascript:(function()
{
f='http://www.delicious.com/save?url='+encodeURIComponent(window.location.href)+
'&title='+encodeURIComponent(document.title)+'¬es='+
encodeURIComponent(''+
(window.getSelection?window.getSelection():document.getSelection?
document.getSelection():document.selection.createRange().text))+'&v=6&';
a=function()
{
if(!window.open(f+'noui=1&jump=doclose','deliciousuiv6','location=1,links=0,scrollbars=0,to
olbar=0,width=710,height=660'))
{
location.href=f+'jump=yes'
}
};
if(/Firefox/.test(navigator.userAgent))
{
setTimeout(a,0);
}
else
{
a();
}
})()
答案 0 :(得分:1)
当您和框架页面位于同一个域中时,您将只能访问iframe中的link元素。引用docs you found:
尝试访问框架内容的脚本受same-origin policy的约束,如果是从其他域加载的,则无法访问其他窗口对象中的大多数属性。
因此,需要使用PHP解决方案。加载给定的域,使用tagsoup解析器并查询dom link[rel="SHORTCUT ICON"]
。
您可以使用该解决方案创建一个JSON API,该API可以通过应用程序的clientside js代码在Ajax上使用。
答案 1 :(得分:0)
由于浏览器中的cross-site scripting限制,我认为如果页面位于其他服务器上,您将很难获取信息客户端。
如果您想查看全部本地文:
XMLHttpRequest();
和
getResponseText();
我认为你可能最好使用PHP方法。
编辑:
我认为这是一个类似的问题:
XMLHttpRequest to get HTTP response from remote host
可能会有进一步的帮助。