firebreath chrome扩展:表单保护程序

时间:2014-04-15 13:34:22

标签: javascript google-chrome-extension firefox-addon npapi firebreath

我已经在C#中为IE编写了一个浏览器帮助对象,并希望将该代码包装起来以实现chrome / firefox扩展。我的研究让我Firebreath。我现在正在加载一个content_script文件,该文件将触发onSubmit事件并向backgound.htm发送消息,js文件处理我的firebreath插件。但是,当然,m_host现在指向后台htm文件而不是原始网站(用户按下提交按钮)。我尝试从原生插件替换html代码,但它无法正常工作..

测试设置:

content_script:

document.addEventListener('DOMContentLoaded', function () {
alert(document.forms.length);
for (var i = 0; i < document.forms.length; i++) {
    document.forms[i].addEventListener("submit", function () {
        var documentHTML = "<html>" + document.documentElement.innerHTML + "</html>";
        chrome.runtime.sendMessage({ inputElement: documentHTML }, function (response) {        }); }); } });

background.js:

chrome.runtime.onMessage.addListener(
   function (request, sender, sendResponse) {
     document.getElementById('plugin0').sethtml(request.inputElement); });

firebreath代码:

void coolnewtestpluginAPI::setInnerHTML(const FB::variant& innerHTML)
{
    m_host->getDOMDocument()->setInnerHTML(innerHTML.convert_cast<std::string>());
}

正在调用本机插件,我可以通过它进行调试。 &#34; setInnerHTML()&#34;成功返回没有任何错误,但html代码没有更新,并引用原始的background.htm文件。有什么想法吗?

PS:我的javascript不是那么流利,所以我宁愿尽可能多地卸载到c#/ c ++

1 个答案:

答案 0 :(得分:1)

将NPAPI / FireBreath插件放入实际页面的唯一方法是使用扩展程序中的javascript将对象标记注入该页面。否则,该插件将不会对该页面一无所知。