0
我正在爲Windows開發Firefox的NPAPI插件。這裏是我的Java腳本:NPAPI插件[FireFox]:Invoke()/ HasProperty()/ HasMethod()沒有被調用
document.addEventListener('load', documentLoad, true);
function loadPlugin(doc)
{
var objWebMon = doc.getElementById("my_firefox");
if(!objWebMon)
{
var objWebMonEmbed = doc.createElement('embed');
objWebMonEmbed.setAttribute('id', 'my_firefox');
objWebMonEmbed.setAttribute('type', 'application/npplugin');
objWebMonEmbed.setAttribute('style', 'height: 10px; width:10px; display:block;');
if(doc.body)
{
doc.body.insertBefore(objWebMonEmbed, doc.body.firstChild);
}
}
}
function documentLoad(event) {
try
{
var doc = event.originalTarget; // doc is document that triggered "onload" event
loadPlugin(doc);
var myplugin = doc.getElementById('my_firefox');
if(myplugin)
{
myplugin();
myplugin.myAction();
}
} catch(err)
{
}
}
因爲我打電話爲myplugin()
bool ScriptablePluginObject::InvokeDefault(const NPVariant *args, uint32_t argCount, NPVariant *result)
被成功地調用,但主叫功能myplugin.myAction()
bool ScriptablePluginObject::Invoke(NPIdentifier name, const NPVariant *args,
uint32_t argCount, NPVariant *result)
功能不叫。我已經在ScriptablePluginObject::HasProperty(NPIdentifier name)
裏面聲明myAction,即使是HasProperty
方法也沒有被調用。
內部catch塊我得到這個錯誤。 TypeError: fasso.myAction is not a function
。
是否調用了'HasMethod()'? –
感謝Georg Fritzsche的回覆不,它沒有被調用。 – Nik
所以你應該在HasMethod()中處理你的函數,它不是一個屬性。有趣的部分是HasMethod()沒有被調用。也許你的插件在InvokeDefault()中崩潰? –