Ich habe ein seltsames Problem mit meinem Javascript in Firefox 3.0.x. In Firefox 3.0.12 wird die Seite ständig neu geladen, sobald der Listenkörper geladen ist. Weder Firefox 3.5, Safari 4 noch Chrome 5 (alle auf Mac) haben dieses Problem.
EDIT : Ich habe ein isoliertes Beispiel erstellt, anstatt dies aus meinem bestehenden Code zu übernehmen.
Das Problem stand im Zusammenhang mit einem Fehler, der dazu führte, dass die Seite neu geladen wurde, wenn location.hash in FF 3.0 auf eine leere Zeichenfolge gesetzt wurde.
test.js
function welcomeIndexOnLoad() {
$("#options a").live('click', function () {
optionClicked($(this), "get_list_body.html");
return false;
});
$(document).ready(function() {
optionClicked(null, "get_list_body.html");
});
}
function optionClicked(sender, URL) {
queryString = "";
if (sender != null) {
queryString = $(sender).attr("rel");
}
$("#list_body").load(URL + "?" + queryString, function(resp, status, AJAXReq) {
console.log(resp);
console.log("" + status);
location.hash = queryString;
});
}
test.html
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script type="text/javascript" src="test.js"></script>
<script>
welcomeIndexOnLoad();
</script>
</head>
<body>
<div id="container">
Outside of list body.
<div id="list_body">
</div>
</div>
</body>
</html>
get_list_body.html
<h3>
<div id="options">
<a href="#" rel="change_list">Change List</a>
</div>
<ul>
<li>li</li>
</ul>
jQuery-Zeile 5252 (ein xhr.send()-Aufruf) wird in der Konsole angezeigt, sobald die Seite neu geladen wird:
xhr.send( type === "POST" || type === "PUT" || type === "DELETE" ? s.data : null );