我正在尝试将js文件中的图像添加到用于Chrome扩展的innerHTML元素中

当我使用联机链接时,它可以工作,但当我指定本地路径时,它不会加载。

工作中:

<img src="https://test-img-url">

不工作:

<img src="image/smile.jpg">

文件:
--Chrome | |-----manifeset.json |-----core | |--- CfCore.js |--- images | |---smile.jpg

所以我在CfCore.js中使用innerHTML:
e.innerHTML='<a href=#> <img src="images/smile.jpg" id="smile"> </a>'

也在我尝试的清单文件中:
"web_accessible_resources":["images/smile.jpg"]

我发现有人建议在清单文件中使用Chrome://扩展名、Web_Accessible_Resources,但我不觉得这有什么帮助,我应该如何在js文件中进行编码。


解决方案

"web_accessible_resources"清单中的json是必需的。

然后在代码中使用chrome.runtime.getURL

e.innerHTML = '<a href=#><img src="' + 
    chrome.runtime.getURL('images/smile.jpg') + '" id="smile"></a>');

或使用简单的regexp replace自动在相对源链接中插入chrome.runtime.getURL

e.innerHTML = expandLocalSrc('<a href=#><img src="images/smile.jpg" id="smile"></a>');

function expandLocalSrc(html) {
    return html.replace(/src="([^:"]+)"/g, 'src="' + chrome.runtime.getURL('') + '$1"');
}

P.S.链接是相对于清单.json的,因此根据您的问题,它是core/images/smile.jpg或简单地移出images目录。

相关文章