【问题标题】:Windows 8 share target crashing with JQueryWindows 8 共享目标与 JQuery 一起崩溃
【发布时间】:2012-04-14 11:31:24
【问题描述】:

我正在开发一个接收内容 (URI) 的应用,并且我正在使用 IE10 共享对其进行测试。

问题是我的元素(span、div 或按钮)关联了 onclick 事件处理程序,在第二次单击时关闭了共享面板。 在窗口中第二次单击任何元素都会导致崩溃。

我已经测试了将该页面作为应用程序的默认页面运行的代码,并且一切正常。这种不良行为仅发生在共享面板上。

经过一段时间的手动调试,我找到了导致崩溃的代码:Jquery lib。 如果页面中存在 Jquery,则会导致共享面板崩溃。

无法使用 Visual Studio 对此进行调试,因为此崩溃仅发生在我没有附加调试器的情况下。附加调试器后,一切正常。

有人可以帮忙吗?请参阅下面的简单页面

<!DOCTYPE html>
<html>

    <head>
        <title></title>
        <!-- WinJS references -->
        <script src="//Microsoft.WinJS.0.6/js/base.js"></script>
        <script src="//Microsoft.WinJS.0.6/js/ui.js"></script>
        <script src="/js/default.js" type="text/javascript"></script>
        <script src="/js/jquery-1.7.2.js" type="text/javascript"></script>
        <script>
            var curr;

            function test() {
                if (curr) {
                    curr.className = "cls1";
                }

                curr = event.srcElement;
                curr.className = "cls2";
            }
        </script>
        <style>
            .cls1 {
                background-color: #f00;
                cursor: pointer;
            }
            .cls2 {
                background-color: #0094ff;
                cursor: pointer;
            }
        </style>
    </head>

    <body>
        <h1>Share</h1>
        <br />
        <div onclick="test();" class="cls1">Button</div>
        <div onclick="test();" class="cls1">Button</div>
    </body>

</html>

谢谢!

【问题讨论】:

  • 你能在 jsfiddle.net 上放一个有效的例子吗?这对帮助我们制定解决方案大有帮助。
  • 你试过通过jQuery绑定点击事件吗(我不喜欢onclick)?

标签: jquery share windows-8 microsoft-metro


【解决方案1】:

试试这个:

<div onclick="javascript:test(); class="cls1">Button</div>

可选:

/* Your own code is good enough but i wanted to create another point of view */
var curr;

function test() {
    curr = event.srcElement;
    if ($(curr).hasClass("cls1")) {
        $(curr).removeClass("cls1")
        $(curr).addClass("cls2")
    }
});

或其他方式:

$(document).ready(function () {
    $("div").each(function () {
        $(this).click(function () {
            if ($(this).hasClass("cls1")) {
                $(this).removeClass("cls1")
                $(this).addClass("cls2")
            }
        });
    });
});

如果您看到任何更改,请通知我。我以这种方式(盲目地)回答,因为只认为这里有 js 问题是有意义的,我想知道当你有 jquery lib 时为什么不使用它?好吧,那是另一个问题。如果您认为我的回答不适合您的问题,请尝试向我们提供尽可能多的信息来解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    相关资源
    最近更新 更多