jsp頁面調用Firefox外掛程式__js
來源:互聯網
上載者:User
同事已經開發了Firefox外掛程式,用於讀取非接觸卡的卡片資訊,但是頁面上不會調用,查了資料之後發現其實蠻簡單,就是坑比較多。
<head>
<title>測試</title>
<embed id="plugin" type="application/intime-plugin" style="display:block;width:50%;height:100px;"></embed>
<script language="JavaScript">
var plugin = document.getElementById("plugin");
function doTest() {
plugin.getcard();
card = plugin.getcard;
alert(card);
}
</script>
</head>
<body>
<form name="formname">
<input type="button" onclick="doTest()" value="讀卡"/>
</form>
</body> embed是外掛程式的載入,getcard()是讀取卡的操作,getcard是獲得卡號資訊。
1、即便使用jQuery,在錨定外掛程式所在DOM元素的時候也不能使用jQuery內建的selector,否則讀不出來
2、外掛程式不能被隱藏,如果被隱藏之後,就失效了,所以display:none;或者hide()都不可取。
原文參考自web開發網:http://www.software8.co/wzjs/
將這個寫成了外掛程式,方便讀卡操作使用。
(function($){
$.fn.swipeCpu = function(params){
var defaults = {
trigger:false
};
$.extend(defaults, params);
var ele = $(this);
//height 1px,width 0px 儘可能壓縮外掛程式在頁面的位置,不能設為0,也不能將display設定none,會導致外掛程式失效;
ele.after("<embed id=\"plugin-cpu-read\" type=\"application/intime-plugin\" style=\"display:block;height:0px;width:0px;\">");
var plugin = document.getElementById("plugin-cpu-read");
plugin.getcard();
//雖然在外掛程式中定義了該屬性是字串,但是傳遞出來的是個對象,所以只能先複製到文字框,再取值,再截取
var cardno = plugin.getcard;
ele.val(cardno);
cardno = substrCard($(this).val());
ele.val(cardno);
$("#plugin-cpu-read").remove();
//是否需要觸發斷行符號事件
if(defaults.trigger){
var event = $.Event("keyup");
event.keyCode = 13;
event.which = 13;
ele.trigger(event);
}
};
})(jQuery);