繁体   English   中英

Firefox附加组件仅在调试状态下执行

[英]Firefox add-on execute only in debugging state

我开发了一个插件来与智能卡通信。 我使用过winscard.dll及其功能(例如建立,连接,传输)。

//less-privileged scope like jsp 

var element = document.createElement("MyExt1");
document.documentElement.appendChild(element);
var evt = document.createEvent("Events");
evt.initEvent("SCardConnect", true,false);
element.dispatchEvent(evt);
var CardHandle = element.getAttribute("CardHandle");
alert(CardHandle);

//privileged scope which exist in my add-on

.
.
.
var MyExtension1 = {
    Connect : function(evt){
        ...
        evt.target.setAttribute("CardHandle", CH.toString());
        var doc = evt.target.ownerDocument;
        var AnswerEvt = doc.createElement("SCardConnect");
        doc.documentElement.appendChild(AnswerEvt);
        var event = doc.createEvent("HTMLEvents");
        event.initEvent("ConnectEvent",true,false);
        AnswerEvt.dispatchEvent(event);
    }
}    
.
.
.
document.addEventListener("SCardConnect", function(e){myExtension1.Connect(e);}, false, true);

简单介绍之后,这就是我的问题:

当我在Firefox中安装插件并逐步调试F10时,它可以正常工作,但是,如果我想不中断地运行外部脚本(不调试),则在获取属性时它将返回null

这是一种基于事件的方法,可以从外部脚本函数中调用附加函数。 还有另一种使用export function方法,但出现以下问题: https : //stackoverflow.com/questions/32450103/calling-a-firefox-add-on-function-from-an-external-javascript-file

您可能需要移动'var CardHandle = element.getAttribute(“ CardHandle”);' 进入新函数,并在指定的时间间隔内检查其值是否有效。

var varTimer = setInterval(function(){ myTimer() }, 1000);

function myTimer() {
    var CardHandle = element.getAttribute("CardHandle");
    if(CardHandle is valid) stopTimer();
}

function stopTimer() {
    clearInterval(varTimer);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM