如何使用 jQuery 访问嵌入式 ActiveX 控件的方法?

发布于 2024-10-13 15:53:06 字数 555 浏览 1 评论 0原文

我在页面中嵌入了一个与打印机和 LED 显示器进行通信的 ActiveX 控件。有没有办法使用 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 访问方法。

I have embedded in my page an ActiveX control which communicates with a printer and an LED display. Is there a way to access, using jQuery, the methods available within the AX control? For example:

 $("#plugin").updateDisplay("COM6:", "test");
 $("#plugin").printReceipt("COM5:", "\x0a\x0a\x1dV\x42\x00");
 $("#plugin").openDrawer();

I know the above doesn't work, but is there some similar way of doing the equivalent using jQuery?

Also, the embedded code looks as such:

<object id="plugin" type="application/x-ticket" width="1" height="1">
<param name="onload" value="pluginLoaded" /></object>

I can access the methods using JavaScript outside of jQuery, but I thought perhaps there was a way to access the methods using jQuery.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

遇见了你 2024-10-20 15:53:06

使用 jquery 有什么好处?直接使用 JS 和 jQuery 是完全可以的。 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,否则不容易理解

What benefit do you get out of using jquery? It's perfectly fine to use straight JS with jQuery. document.getElementById('plugin').updateDisplay('blah', 'bleh'). But if you really want to, you can create a plugin.

jquery.fn.updateDisplay = function(a, b) {
  this.each(function(index, el){
    el.updateDisplay(a, b);
  });
  return this;
}

//... and so on

Here's a generic way of doing it:

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")

The generic method is pretty involved (borrowing Function.prototype and self calling functions to isolate the looping variable), so it's not easy to understand unless you have a good grasp of JavaScript

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文