【发布时间】:2011-10-14 15:53:18
【问题描述】:
我正在创建一个有趣的 Chrome 扩展程序,但我的弹出页面出现问题。我使用 jQuery load() 函数来加载现有页面的一部分,比如说:http://aaa.com:
<div id="aaa-news">
$(document).ready(function(){
$("#ox-news").load("http://aaa/News/ .news_list");
});
</div>
由于我尝试加载到 popup.html 的页面部分包含一些链接,但似乎这些链接的 href 属性已被 Chrome 修改,只要它们加载到 popup.html.So 即使我使用了 chrome.tabs。 create.* API 打开一个新标签,它总是显示给我
没有找到该网址的网页: Chrome 扩展程序://phigdpgmolbpdcihdohfpbafibncbkhl/News/1 错误 6 (net::ERR_FILE_NOT_FOUND):找不到文件或目录。
有人知道吗?感谢您的帮助!
【问题讨论】:
-
您是说您正在尝试将外部(不包含在扩展程序中)页面的内容加载到您的弹出窗口中,并且其中加载的相关链接没有正确打开?如果是这样,我能想到的唯一干净的解决方法是将链接的来源更改为绝对的(例如
<a href="http://aaa/News/1">而不是<a href="News/1">。如果您无法更改来源(即它不属于您) ) 那么你可能需要很聪明,如果链接是相对的,则将它们设为绝对链接。 -
@Alasdair:准确指出!首先,我无法更改源,所以我想也许我可以将相对链接更改为绝对链接,但这有很多硬编码,我该如何动态更改它们?如果他们更新网站,再添加一条新闻怎么办?
-
不幸的是,这不是一件容易的事,我只能建议您密切关注您的来源以了解其链接的更改。如果它们是简单的相对链接(例如
News/1),那么您可以简单地将源页面 URL 添加到该链接以使其工作。但是,如果它们具有更复杂的链接(../News/1、/News/1等),这可能会变得复杂。我刚刚偶然发现this script 这可能会有所帮助,但我现在没有时间测试它。祝你好运! -
如果您可以访问源页面的 DOM,也许
url = location.resolveURL(url);可以工作。但是,如果使用,这可能只会创建一个相对于您的扩展路径的链接:(
标签: popup google-chrome-extension