2012-03-30 4 views
10

Ich entwickle eine App, die Contente (URI) erhalten und ich es mit IE10 Sharing testen.Windows 8 Freigabe Ziel Absturz mit JQuery

Das Problem ist, dass meine Elemente (span, divs oder buttons), denen onclick-Ereignishandler zugeordnet sind, das Freigabefenster im zweiten Klick schließt. Der zweite Klick im Fenster auf ein beliebiges Element verursacht den Absturz.

Ich habe den Code getestet, der die Seite als die Standardseite der App ausführt, und alles funktioniert gut. Dieses unerwünschte Verhalten tritt nur im Freigabefenster auf.

Nach einiger Zeit des manuellen Debuggens habe ich den Code gefunden, der die Ursache verursacht: Die Jquery-Bibliothek. Wenn Jquery auf der Seite angezeigt wird, führt dies zu einem Absturz im Freigabefenster.

Es ist nicht möglich, dies mit Visual Studio zu debuggen, da dieser Absturz nur auftritt Ich habe nicht den Debugger angeschlossen. Mit dem angehängten Debugger funktioniert alles einwandfrei.

Jemand kann dabei helfen? Siehe meine einfache Seite unter

<!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> 

Vielen Dank!

+3

Würdest du ein funktionierendes Beispiel auf jsfiddle.net setzen können? Es wird uns viel helfen, eine Lösung zu finden. –

+0

Haben Sie versucht, das Click-Ereignis über jQuery zu binden (ich mag 'onclick' nicht)? – mreq

Antwort

1

versuchen Sie stattdessen:

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

mit optional:

/* 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") 
    } 
}); 

oder eine andere Art und Weise, es zu tun:

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

Bitte informieren Sie mich, wenn Sie irgendwelche Änderungen sehen können. Ich habe auf diese Weise (blind) geantwortet, weil ich nur denke, dass es sinnvoll ist, hier Probleme mit js zu haben, und ich frage mich, während du jquery lib hast, warum benutzt du es nicht? Gut, das ist natürlich eine andere Frage. Wenn Sie denken, dass meine Antwort nicht zu Ihrer Frage passt, versuchen Sie bitte, uns so viele Informationen wie möglich zu geben, um dieses Problem zu lösen.