我在我的页面中嵌入了一个ActiveX控件,它与打印机和LED显示器进行通信。有没有办法使用jQuery访问AX控件中可用的方法?例如:
$("#plugin").updateDisplay("COM6:", "test");
$("#plugin").printReceipt("COM5:", "\x0a\x0a\x1dV\x42\x00");
$("#plugin").openDrawer();
我知道上面的内容不起作用,但有没有类似的方法使用jQuery做等效的方法?
此外,嵌入式代码如下:
<object id="plugin" type="application/x-ticket" width="1" height="1">
<param name="onload" value="pluginLoaded" /></object>
我可以在jQuery之外使用JavaScript访问这些方法,但我想也许有办法使用jQuery访问这些方法。
答案 0 :(得分:0)
使用jquery有什么好处?使用jQuery直接JS是完美的。 document.getElementById('plugin').updateDisplay('blah', 'bleh')
。但如果你真的想,你可以创建一个插件。
jquery.fn.updateDisplay = function(a, b) {
this.each(function(index, el){
el.updateDisplay(a, b);
});
return this;
}
//... and so on
这是一种通用的方法:
function convertMethodsTojQuery(/* methodName1, methodName2, ...*/) {
// In some browsers (*cough* IE *cough*), the methods of DOM
// objects are not real JavaScript Functions and don't
// support the apply method. Borrow Function's apply.
var apply = Function.prototype.apply;
for (var i=0; i < arguments.length; i++) {
var methodName = arguments[i];
jQuery.fn[methodName] = (function(name) {
return function() {
// Save arguments so it's available in the inner looping closure
var args = arguments;
this.each(function(index, el){
apply.call(el[name], el, args);
});
}
})(name);
}
}
// Call it like
convertMethodsTojQuery("updateDisplay", "printReceipt", "openDrawer")
泛型方法非常复杂(借用Function.prototype和自调用函数来隔离循环变量),所以除非你很好地掌握JavaScript,否则它不容易理解