所以我有這個代碼,這是一個PHP文件的輸出(因此一些像3等級的東西等)。IE/Chrome中未定義的函數,但不是Firefox
它在Firefox中完美地工作,但Chrome和IE的行爲就像觀察者不存在一樣。
此外,#ratingwrapper的onmouseout功能在Chrome和IE中被視爲「未定義」。令人難以置信的是,爲什麼這兩個瀏覽器完全忽略了JS,而Firefox卻能看到一切。
我嘗試了絕對的一切,甚至打電話給簡單的警報,沒有任何工作在IE和鉻。我嘗試刪除觀察者,並在#ratingwrapper div中執行所有操作,但所有函數都在Chrome中處於「未定義」狀態。
我正在使用原型,標頭js聲明都是按順序的,因爲使用原型的其他腳本在頁面上工作。沒有衝突等等,我被這個無法解釋的錯誤所困擾。
<div class="ratings">
<div class="rating-box" id="ratingbox">
<div class="rating" id="ratingboxfill" style="width:100%"></div>
</div>
<div id="ratingwrapper" onmouseout="revertProductRating()"></div>
<br /><br />
<div id="curpos"></div>
<div id="cpos"></div>
<span class="amount">3 ratings</span>
<input id="newRating" type="hidden" value="0" />
</div>
<script type="text/javascript">
function setNewProductRating(e) {
var ratingx = Event.pointerX(e);
var ratingy = Event.pointerY(e);
var containerLeft = Position.page($('ratingbox'))[0];
var containerTop = Position.page($('ratingbox'))[1];
var hpos = ratingx - containerLeft;
var vpos = ratingy - containerTop;
$("cpos").update(hpos+","+vpos);
if (hpos <= 9) {
revertProductRating(10)
$("newRating").value=1;
} else if(hpos <19) {
revertProductRating(20)
$("newRating").value=2;
} else if(hpos <28) {
revertProductRating(30)
$("newRating").value=3;
} else if(hpos <38) {
revertProductRating(40)
$("newRating").value=4;
} else if (hpos < 47) {
revertProductRating(50)
$("newRating").value=5;
} else if (hpos < 57) {
revertProductRating(60)
$("newRating").value=6;
} else if (hpos < 66) {
revertProductRating(70)
$("newRating").value=7;
} else if (hpos < 76) {
revertProductRating(80)
$("newRating").value=8;
} else if (hpos < 85) {
revertProductRating(90)
$("newRating").value=9;
} else if (hpos < 96) {
revertProductRating(100)
$("newRating").value=10;
} else {
revertProductRating()
}
}
function revertProductRating(force=0) {
if (force == 0) {
//document.getElementById("ratingboxfill").style.width = "100%";
$("curpos").update("force=0");
$("ratingboxfill").setStyle({
width: '100%'
});
} else {
//document.getElementById("ratingboxfill").style.width = force+"%";
$("curpos").update("force="+force);
$("ratingboxfill").setStyle({
width: force+'%'
});
}
}
function sendProductRating()
{
value = $("newRating").getValue();
window.location = 'http://x.dev/y/' + 'ratingValue/' + value;
}
$('ratingwrapper').observe('mousemove', setNewProductRating);
$('ratingwrapper').observe('click', sendProductRating);
</script>
你是否檢查了JavaScript錯誤控制檯?如果是這樣,它說了什麼? –