我想使用NPAPI在C++中开发一个简单的Chrome扩展,它可以将当前页面的HTML内容转储到文件中。我在开发插件/扩展方面没有太多专业知识。我该如何开始?
1-创建扩展。。。http://code.google.com/chrome/extensions/getstarted.html
2-创建一个NPAPI插件。。。http://colonelpanic.net/2009/03/building-a-firefox-plugin-part-one/
3-在你的扩展清单上添加插件。。。
"plugins": [
{ "path": "your_npapi_plugin.dll" }
],
4-在您的扩展后台页面上创建插件
<script>
var plugin = document.getElementById("MyNPAPIPluginId");
...
</script>
5-创建一个javascript,用作在每个页面上注入的内容脚本。在该脚本上,与您的npapi可脚本化对象进行通信,并完成您想要做的工作。
如何获取MyNPAPIPluginId的值?我所拥有的只是DLL的名称?
当你添加插件的标签时,你会在后台页面上放置id
<embed type="application/my-plugin-mimetype" id="MyNPAPIPluginId">
在Windows上,在DLL的资源文件上添加MIMEType,添加一个带有以下内容的条目:
VALUE "MIMEType", "application/my-plugin-mimetype"
这里有一个插件可以帮助您
http://code.google.com/p/npapi-file-io/
…消息来源也在那里。这个插件将允许你在一个文件中写入一个字符串(你的html)以及其他一些好东西。不幸的是,Windows和Linux
然后你所需要做的就是写一个脚本来转储你想要的东西。
正如smorgan在评论中指出的那样,这类插件有可能相当危险
因此,当您将插件添加到清单时,请确保将公共属性设置为false
http://code.google.com/chrome/extensions/npapi.html
"plugins": [
{ "path": "plugin.dll", "public": false }
]
在未来(Chrome 18),您应该使用清单版本2…
http://code.google.com/chrome/extensions/trunk/manifestVersion.html
此外,我认为您希望在没有任何用户输入的情况下保存文件。如果这不是真的,并且每次都有一个对话框来选择保存文件的位置是可以接受的,那么这可以在不使用插件的情况下完成。