NPAPI插件开发详细记录:实用功能——添加、识别私有属性

16 篇文章 0 订阅
13 篇文章 0 订阅
据我所知,除了通用属性如:id、class等,object标签的属性有type、data、width、height,embed标签的属性有type、src、width、height。而flashplayer插件所具有的loop、autoplay等属性都是插件自己添加的,无法用NPN_GetProperty接口进行获取。假设我们要开发一个插件允许使用loop属性,那该怎么实现呢?
这个就要找到NS_NewPluginInstance函数中了,这个函数的参数是一个nsPluginCreateData。这个结构中就保存了标签中所有的属性和属性值。这个函数中创建了一个新的Plugin对象,Plugin对象的构造函数参数为NPP,故此处传递了nsPluginCreateData的instance。如果我们需要获取和识别私有属性如loop,推荐实现一个可以接受nsPluginCreateData的Plugin构造函数。这样就可以在plugin构造函数中获取私有属性的值了。
假设我们要实现私有属性loop。并使得只有如下方式loop才无效:不设置loop属性、loop=false、loop=no、loop=0.其他方式loop如:loop、loop=true、loop=yes、loop=1等都有效。那我们的代码可以这样写:
	//读取私有属性。
   m_bLoop=false;//初始设为false,保证没有设置该属性时无效
	int16_t argNum = cd->argc;//the number of HTML arguments in the element
	// 	cd->argn;//The argn array contains the attribute names
	// 	cd->argv;//the argv array contains the attribute values
	int16_t argCur = 0;
	for (argCur=0;argCur<argNum;argCur++)
	{
		if (0==strcmp(cd->argn[argCur],"loop"))
		{
			m_bLoop = true;
			std::string loop = std::string(cd->argv[argCur]);
			if(loop=="no"||loop=="false"||loop=="0") m_bLoop = false;
		}
	}

如上代码所实现的私有属性最简单的组合就是需要loop时用<object name=value loop > </object>不需要loop时用<object name=value > </object>。其中name=value对表示其他属性类似于:id=”plugindemo”。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值