Firebreath插件制作

参考2教会了我:

1.  制作Firebreath需要哪些库。

注意:参考3让我下载的Python的版本为2.7,要是你下载最新版本(比如3.4.3),那么在编译firebreath夹子下面的fbgen.py会产生问题。所以我不得已又下载了python2.7的版本来编译,结果一切OK.



参考1教会了我:

但是参考1里面有个问题“将产生的npdemo.dll复制到用来测试的Firefox profile文件中plugins目录(没有的话自己新建吧)下,然后用这个profile运行Firefox,打开FBControl.htm文件”让我不理解。

但是我在参考3找到了答案,其实就是将npdemo.dll复制到“C:\Users\Joseph\AppData\Roaming\Mozilla\Firefox\Profiles\x7f3i6v3.default\plugins”里面,这样就可以了。



个人感受

一直以来我都会插件心存敬畏,因为觉得插件太奥妙。不知道什么是插件,貌似懂了一些概念,但是完全不敢讨论插件。今天有机会做了一些浏览器插件,虽然现在只知道一点皮毛,但是也多少了解了一点。正好前段时间,我在制作NSIS的插件,其实就是我自己写个DLL,满足NSIS的调用约定,给NSIS调用。
今天看了下浏览器插件,感觉理论上是类似的,都是我自己写一个DLL给浏览器调用。哈哈。。


目前存在的问题

我通过

注册插件:regsvr32 npdemo.dll

卸载插件:regsvr32 /u npdemo.dll

在IE和firefox都可以用,但是在chrome却无法加载此插件。。


/

// 2015/06/05添加

在浏览器中调用插件

编译上面生成的FireBreath后,我们会在firebreath-FireBreath-105dcc6\build\projects\demo\gen\下找到FBControl.htm这个文件,其内容如下:

<!--
    Auto-generated test-site
-->
<html>
<head>
<title>test page for object fbcontrol</title>
</head>
    <script type="text/javascript">
        function plugin0()
        {
            return document.getElementById('plugin0');
        }
        plugin = plugin0;
        function addEvent(obj, name, func)
        {
            if (obj.attachEvent) {
                obj.attachEvent("on"+name, func);
            } else {
                obj.addEventListener(name, func, false); 
            }
        }
        
        function load()
        {
            addEvent(plugin(), 'test', function(){
                alert("Received a test event from the plugin.")
            });
        }
        function pluginLoaded() {
            alert("Plugin loaded!");
        }
        
        function addTestEvent()
        {
            addEvent(plugin(), 'echo', function(txt,count){
                alert(txt+count);
            });
        }
        
        function testEvent()
        {
            plugin().testEvent();
        }
        
        function pluginValid()
        {
            if(plugin().valid){
                alert(plugin().echo("This plugin seems to be working!"));
            } else {
                alert("Plugin is not working :(");
            }
        }
    </script>
<body οnlοad="load()">
<object id="plugin0" type="application/x-demo" width="300" height="300">
    <param name="onload" value="pluginLoaded" />
</object><br />
    
<a href="#" οnclick="javascript:pluginValid()">Click me!</a> <br />
<a href="#" οnclick="javascript:addTestEvent()">Activate click counter</a> <br />
<a href="#" οnclick="javascript:testEvent()">Fire a test event</a> <br />
</body>
</html>
由于我是第一次接触javascript脚本,所以需要考虑一下。

1. <body οnlοad="load()">
load()这个js脚本在整个页面被加载后调用。

2.<param name="onload" value="pluginLoaded" />

这里面的onload在插件被加载后调用。


3. <a href="#" οnclick="javascript:pluginValid()">Click me!</a> <br />

当你点击此超链接时,会调用javascript脚本。


其中:plugin().echo("This plugin seems to be working!")会调用

FB::variant demoAPI::echo(const FB::variant& msg)
{
    static int n(0);
    fire_echo("So far, you clicked this many times: ", n++);

    // return "foobar";
    return msg;
}
返回你给的字符串“This plugin seems to be working!“


其中: plugin.test()会调用

void demoAPI::testEvent()
{
    fire_test();
}
这样就很简单了。。






参考:

1. http://blog.csdn.net/z6482/article/details/7486921

2. http://blog.csdn.net/luoweifu/article/details/44603645

3. http://bbs.kafan.cn/thread-1726111-1-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值