1

我设计了一个可以很好地处理 html 页面的荧光笔,但是当我尝试与 OpenLaszlo 应用程序集成时,我遇到了鼠标事件的问题.....

OpenLaszlo 应用程序有一个按钮,单击该按钮可激活荧光笔。该应用程序已部署为单独的应用程序,并且与该按钮对应的功能已写入生成的“index.html”文件中。

Laszlo 应用程序中定义的按钮代码如下:--

 <button name="Highlighter" onclick="highlightController()">Highlighter
            
                <method name="highlightController">
                    if(parent.check="false"){
                            this.setAttribute("check", true);
                            
                            if(this.check == true){
                                lz.Browser.loadJS('Highlight("true")');
                            }
                            else if(this.check == false){
                                lz.Browser.loadJS('Highlight("false")');
                            }
                    }
                </method>
  </button>

对应的按钮功能如下:--

    function Highlight(check) {
        alert("button function");
        var cursor = {},
        divr = {},
        dragging = false,
        dv=document.createElement('div');
        dv.setAttribute('id',"maindiv");
        document.body.appendChild(dv);
        var maindiv=document.getElementById('maindiv');
    
    function maindivstart(a, b) {
    
        cursor.a = a;
        cursor.b = b;
        maindivposition();
        dragging = true;
        $('#maindiv').clone().insertAfter("#maindiv");
    
    }

    function maindivsize(a, b) {

        divr.left = a < cursor.a ? a : cursor.a;
        divr.top = b < cursor.b ? b : cursor.b;
        divr.width = Math.abs(a - cursor.a),
        divr.height = Math.abs(b - cursor.b);
        maindivposition();
        maindivresize();

    }

    function maindivend() {

        dragging = false;
    
    }

    function maindivposition() {

        maindiv.style.top = divr.top + 'px';
        maindiv.style.left = divr.left + 'px';

    }

    function maindivresize() {

        maindiv.style.width = divr.width + 'px';
        maindiv.style.height = divr.height + 'px';

    }

    window.onmousedown = ( function (e) {
   
        var a = e.clientX,
            b = e.clientY;
        e.preventDefault();
        maindivstart(a, b);

    });

    window.onmousemove = ( function (e) {
    
        var a = e.clientX,
            b = e.clientY;
        e.preventDefault();
        if (dragging) {
            maindivsize(a, b);
        }

    });

    window.onmouseup = ( function (e) {

        e.preventDefault();
        maindivend();
    
    });

}

鼠标事件不起作用...有人可以帮忙吗?

4

1 回答 1

1

当您有一个使用 DHTML 运行时的应用程序时,您可以直接调用任何 JavaScript 函数,无需通过 lz.Browser。

<canvas>

  <!-- Calling the alert function from a DHTML OpenLaszlo app -->
  <button onclick="window.alert('Calling JS from OpenLaszlo')"
      text="Call some JS" />

</canvas>

如果你想为这两个运行时编译,最好使用 lz.Browser:

<canvas>

  <button text="Call some JS">
    <handler name="onclick">
       lz.Browser.loadJS("alert('Calling JS from OpenLaszlo')");
    </handler>
  </button>

</canvas>

如果将 OpenLaszlo 应用程序嵌入 HTML 页面的代码不正确,则可能是错误的一种来源。部署应用程序的最佳方式是使用 SOLO 部署工具(我假设您已经这样做了)。如果某些东西不起作用,请检查浏览器 JavaScript 错误控制台以获取错误消息。您也可以直接在控制台中评估表达式。如果在加载应用程序时在控制台中键入以下 JavaScript 表达式会发生什么:

lz.Browser.loadJS('alert("true")');

您是否看到任何错误消息?

于 2012-09-06T15:26:18.310 回答