鼠标事件在openlaszlo应用程序中不起作用

时间:2012-09-06 14:39:57

标签: javascript-events mouseevent openlaszlo

我设计了一款可以与html页面配合使用的荧光笔,但是当我尝试与openlaszlo应用程序集成时,我遇到了鼠标事件的问题......

openlaszlo applciation应用程序有一个按钮,在点击时激活荧光笔。应用程序已部署为独立应用程序,并且与按钮对应的功能已写入生成的“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();

    });

}

鼠标事件不起作用......任何人都可以帮忙...... !!

1 个答案:

答案 0 :(得分: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")');

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