Hallo,
ich fange gerade erst an mich mit jQuery bzw. jQuery mobile zu beschäftigen und schreibe aktuell eine Web-App auf Basis von jQuery mobile.
Jetzt habe ich ein Script erstellt das zwar zu funktionieren scheint, aber im Firefox 19 zu Script-Abbrüchen führt. Also es kommt die Meldung "Nicht antwortendes Script" bei dem man die Wahlmöglichkeit hat ob man das Script weiter ausführen oder beenden will. Klicke ich auf "Script weiter auführen" funktioniert alles so wie ich es mir vorgestellt hatte. Jetzt dachte ich, ich hab da sicher einige Fehler im Script, da ich ja noch Anfänger bin.
Könnt Ihr mal drüber schauen und mir erklären woran es liegt?
Folgende Scripts habe ich im Head eingebunden:
Und hier nun mein wahrscheinlich fehlerhaftes Script, das ich im Body eingebunden habe:
FireFox's Dialogfenster "Nicht antwortendes Script" verweist auf folgende Codezeilen in der Datei "jquery-1.8.2.js": Zeilen 119, 2056 und 5265.
Zeile 119:
Zeile 2056:
Zeile 5265:
Ich hoffe Ihr könnt etwas damit anfangen. Ich kann es leider noch nicht.
Ich verstehe lediglich, dass es wohl etwas mit dem Erstellen und Auslesen des Arrays "tn_array" zu tun hat.
Aber wie ich das beheben bzw. das Script verbessern kann, weiss ich leider noch nicht.
Könnt Ihr mir hier weiterhelfen? Würde mich wirklich sehr freuen.
Vielen Dank im Voraus für Eure Mühe.
ich fange gerade erst an mich mit jQuery bzw. jQuery mobile zu beschäftigen und schreibe aktuell eine Web-App auf Basis von jQuery mobile.
Jetzt habe ich ein Script erstellt das zwar zu funktionieren scheint, aber im Firefox 19 zu Script-Abbrüchen führt. Also es kommt die Meldung "Nicht antwortendes Script" bei dem man die Wahlmöglichkeit hat ob man das Script weiter ausführen oder beenden will. Klicke ich auf "Script weiter auführen" funktioniert alles so wie ich es mir vorgestellt hatte. Jetzt dachte ich, ich hab da sicher einige Fehler im Script, da ich ja noch Anfänger bin.
Könnt Ihr mal drüber schauen und mir erklären woran es liegt?
Folgende Scripts habe ich im Head eingebunden:
HTML:
<script src="js/jquery-1.8.2.js"></script>
<script src="js/jquery.mobile-1.3.0.min.js"></script>
Und hier nun mein wahrscheinlich fehlerhaftes Script, das ich im Body eingebunden habe:
HTML:
<script type="text/javascript">
function hideAddressBar(){
if(document.documentElement.scrollHeight<window.outerHeight/window.devicePixelRatio)
document.documentElement.style.height=(window.outerHeight/window.devicePixelRatio)+'px';
setTimeout(window.scrollTo(1,1),0);
}
window.addEventListener("load",function(){hideAddressBar();});
window.addEventListener("orientationchange",function(){hideAddressBar();});
$('#startseite').on("pageshow", function(){
$('.panel_submenu li:first').css('margin-right',15);
$('.panel_submenu li:odd').css('margin-right',15);
var path = "http://www.domain.de/images/icons/";
$('#liste').empty();
$('.ui-input-search .ui-input-text').attr('placeholder',function(index,attr){
return attr.replace('Filter items...', 'durchsuchen...');
});
$.getJSON('json/json-datei.json', function(data) {
$.each(data.json.teaser, function(i,item) {
var title = item.title;
var teaser = item.teaser;
var id = item.id;
$('<li class="aid_'+id+'"><a href="details.html" rel="external" data-transition="slide" onClick="javascript:sessionStorage.id=\''+id+'\';"><h3>'+title+'</h3>'+teaser+'</a></li>').appendTo('#liste');
var tn_array = Array();
$('#liste img').each(function() {
var scr = $(this).attr('src');
var start_pos = scr.lastIndexOf('/')+1;
var end_pos = scr.indexOf('.png',start_pos);
var img_filename = scr.substring(start_pos,end_pos);
tn_array.push(img_filename);
}); /* ende each "tn_array" */
$.each(tn_array, function(index,value) {
for (var i=0, len=value.length; i < len; i++) {
$('#liste li.aid_'+id).addClass(value);
}
}); /* ende each "addClass" */
}); /* ende each "teaser" */
$('#liste').listview('refresh');
$('#liste img').attr('src',function(index,attr){
return attr.replace('content/images/icons/', path);
}); /* ende änderung bildpfad icons */
$.each(data.json.filter, function(i,item2) {
var pid = item2.pid;
var title = item2.title;
var filteritem = '<div data-role="fieldcontain"><input type="checkbox" name="'+title+'" id="'+title+'" value="'+title+'" /><label for="'+title+'">'+title+'</label></div>';
if(pid==1){
$(filteritem).appendTo('#filter_1 form');
}
if(pid==2){
$(filteritem).appendTo('#filter_2 form');
}
if(pid==3){
$(filteritem).appendTo('#filter_3 form');
}
if(pid==4){
$(filteritem).appendTo('#filter_4 form');
}
});/* ende each "filter" */
});/* ende getJSON() */
});/* ende "on pageshow" */
</script>
FireFox's Dialogfenster "Nicht antwortendes Script" verweist auf folgende Codezeilen in der Datei "jquery-1.8.2.js": Zeilen 119, 2056 und 5265.
Zeile 119:
Code:
// Handle HTML strings
if ( typeof selector === "string" ) {
if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
// Assume that strings that start and end with <> are HTML and skip the regex check
match = [ null, selector, null ];
} else {
match = rquickExpr.exec( selector ); // das ist Zeile 119
}
Zeile 2056:
Code:
addClass: function( value ) {
var classNames, i, l, elem,
setClass, c, cl;
if ( jQuery.isFunction( value ) ) {
return this.each(function( j ) {
jQuery( this ).addClass( value.call(this, j, this.className) );
});
}
if ( value && typeof value === "string" ) {
classNames = value.split( core_rspace );
for ( i = 0, l = this.length; i < l; i++ ) {
elem = this[ i ];
if ( elem.nodeType === 1 ) {
if ( !elem.className && classNames.length === 1 ) {
elem.className = value;
} else {
setClass = " " + elem.className + " ";
for ( c = 0, cl = classNames.length; c < cl; c++ ) {
if ( setClass.indexOf( " " + classNames[ c ] + " " ) < 0 ) {
setClass += classNames[ c ] + " ";
}
}
elem.className = jQuery.trim( setClass ); // das ist Zeile 2056
}
}
}
}
Zeile 5265:
Code:
select = function( selector, context, results, seed, xml ) {
// Only use querySelectorAll when not filtering,
// when this is not xml,
// and when no QSA bugs apply
if ( !seed && !xml && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
var groups, i,
old = true,
nid = expando,
newContext = context,
newSelector = context.nodeType === 9 && selector;
// qSA works strangely on Element-rooted queries
// We can work around this by specifying an extra ID on the root
// and working up from there (Thanks to Andrew Dupont for the technique)
// IE 8 doesn't work on object elements
if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
groups = tokenize( selector );
if ( (old = context.getAttribute("id")) ) {
nid = old.replace( rescape, "\\$&" );
} else {
context.setAttribute( "id", nid );
}
nid = "[id='" + nid + "'] ";
i = groups.length;
while ( i-- ) {
groups[i] = nid + groups[i].join("");
}
newContext = rsibling.test( selector ) && context.parentNode || context;
newSelector = groups.join(",");
}
if ( newSelector ) {
try {
push.apply( results, slice.call( newContext.querySelectorAll(
newSelector
), 0 ) ); //das ist Zeile 5265
return results;
} catch(qsaError) {
} finally {
if ( !old ) {
context.removeAttribute("id");
}
}
}
}
return oldSelect( selector, context, results, seed, xml );
};
Ich hoffe Ihr könnt etwas damit anfangen. Ich kann es leider noch nicht.
Ich verstehe lediglich, dass es wohl etwas mit dem Erstellen und Auslesen des Arrays "tn_array" zu tun hat.
Aber wie ich das beheben bzw. das Script verbessern kann, weiss ich leider noch nicht.
Könnt Ihr mir hier weiterhelfen? Würde mich wirklich sehr freuen.
Vielen Dank im Voraus für Eure Mühe.
