如果你打開頁面: http://www.rhino.com/shop/product/the-monkees-the-birds-the-bees-the-monkees-boxed-set 你會在頁面底部看到下一個和上一個按鈕,這些是導航按鈕,它們在firefox中工作正常,但在ie中,樣式從頁面中移除時點擊!請告知可能是什麼原因的問題。我已經花了幾個小時的調試:(如何解決ie7/8中的javascript錯誤?
0
A
回答
1
當我調試它在IE8,我看到一個運行時錯誤的位置:
cd=new Date();
最有可能的,這並不與這片HTML的一致:
<li id="cd" class=""><a href="#productInfo-cd">CD</a></li>
IE'helpfully'啓動了一個ID爲全局變量的元素,因此cd
實際上是一個<li>
元素,IE不喜歡它,如果你指定了new Date()
,那麼IE會把cd視爲正常局部變化能夠,但它不會,因此運行時錯誤。
這段代碼是在一個匿名函數裏面,它真的很討厭(如下所示)。但解決方案很簡單:只需編寫適當的函數,並聲明變量。如果匿名函數會用一條線在頂部聲明變量是這樣的:
var cd, dc, ...other variable names... ;
它會工作得很好,因爲這時函數內部的cd
變量就不得不提到的局部變量,而不是全球IE認爲與id="cd"
對應的li
元素。
現在完全有可能這只是本頁面的許多問題之一。但我假設IE遇到的第一個錯誤會停止執行腳本的其餘部分,這就是爲什麼它沒有工作。
function anonymous(t, z, y) {
dc=new Date('1/1/2000');f=15;ne=8;
if(dc.getDay()!=6||dc.getMonth()!=0){
return'Data Not Available'
}else{;
z=parseInt(z);
if(y=='2009'){f=8;ne=1};
gmar=new Date('3/1/'+y);
dsts=f-gmar.getDay();
gnov=new Date('11/1/'+y);
dste=ne-gnov.getDay();
spr=new Date('3/'+dsts+'/'+y);
fl=new Date('11/'+dste+'/'+y);
cd=new Date();
if(cd>spr&&cd<fl){
z=z+1
}else{
z=z
};
utc=cd.getTime()+(cd.getTimezoneOffset()*60000);
tz=new Date(utc + (3600000*z));
thisy=tz.getFullYear();
var days=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
if(thisy!=y){
return'Data Not Available'
}else{;
thish=tz.getHours();
thismin=tz.getMinutes();
thisd=tz.getDay();
var dow=days[thisd];var ap='AM';var dt='Weekday';
var mint='00';
if(thismin>30){mint='30'}
if(thish>=12){ap='PM';thish=thish-12};
if (thish==0){thish=12};
if(thisd==6||thisd==0){dt='Weekend'};
var timestring=thish+':'+mint+ap;
var daystring=dow;
var endstring=dt;
if(t=='h'){
return timestring}
if(t=='d'){
return daystring};if(t=='w'){return endstring}}};
}
現在調試這是從哪裏來的是一個概率。我的調用堆棧讀取的內容如下:
anonymous JScript
s_doPlugins JScript
anonymous function JScript
global code JScript
第一個是發生實際錯誤的位置。
哪裏,所有這一切發生的根源就在這裏:
/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
var s_code=s.t();if(s_code)document.write(s_code)
不知何故,從這裏開始,s_doPlugins被稱爲其包含對造成麻煩匿名函數的實際調用。它看起來像s_doPlugins
位於s_code.js
。如果說我的那一步,我覺得麻煩的是在這一行:
s.prop9=s.getTimeParting('h','-5','2008'); // Set hour
這是s_code.js
38行。隨着一點點的閒逛,我發現這是實際工作中這個插件:
/*
* Plugin: getTimeParting 1.3 - Set timeparting values based on time zone
*/
s.getTimeParting=new Function("t","z","y",""
+"dc=new Date('1/1/2000');f=15;ne=8;if(dc.getDay()!=6||"
...more crap here...
這是在s_code.js線95
由於速戰速決我可能會在註釋掉所有呼叫s.getTimeParting()
s_doPlugins()
在s_code.js
,看看是否解決了你的問題。然後,長而堅硬但高貴的taks仍然攪動着一些明智的東西:))
1
我發現這個真氣並發現問題是我的網站使用ID爲「utc」的div,它與s_code JS。 'UTC'是與時間有關的,所以我只能假設有sl JS的JS依靠它是別的東西,如果有的話!
相關問題
- 1. 如何解決PHP中的「解析錯誤:語法錯誤」?
- 2. 如何解決JavaScript中的Chrome的調試模式錯誤?
- 3. 如何解決nodemailer中的CERT_UNTRUSTED錯誤
- 4. 如何解決MySQL中的#1064錯誤?
- 5. 如何解決Android中的SharedPreference錯誤?
- 6. 如何解決mule中的java.lang.ClassNotFoundException:com.sap.conn.jco.JCoException錯誤?
- 7. 如何解決Targetpath中的錯誤?
- 8. 如何解決SharePoint2010中的錯誤「connection:closed」?
- 9. 如何解決android中的NetworkOnMainThreadException錯誤?
- 10. 如何解決PhpStorm中的CSScomb錯誤?
- 11. 如何解決Qt5中的gstreamer錯誤?
- 12. 如何解決laravel中的'MethodNotAllowedHttpException'錯誤?
- 13. 如何解決IIS中的503錯誤
- 14. 如何解決socket.io中的錯誤?
- 15. 如何解決opencart中的MySQL錯誤?
- 16. 如何解決android中的webview錯誤?
- 17. 如何解決testlink中的JIRA錯誤
- 18. 如何解決Azure中的500.1002錯誤?
- 19. 如何解決Opensift中的express.js錯誤?
- 20. 如何解決yaml/swagger中的錯誤?
- 21. 如何解決AppDelegate中的coreData錯誤?
- 22. 如何解決getMemberNames()中的JsonCPP錯誤?
- 23. 如何解決pyspark中的pickle錯誤?
- 24. 如何解決Odoo 8中的錯誤?
- 25. 如何解決servlet中的stackoverflow錯誤?
- 26. 如何解決scrapy中的403錯誤
- 27. 如何解決Android中的Logcat錯誤
- 28. 如何解決CICS中的PROG753錯誤?
- 29. 如何解決Android中的NullPointerException錯誤?
- 30. 如何解決Yii中的錯誤CDbException?
感謝您的信息,但我可以在哪裏找到這個匿名方法,在哪個頁面中? – 2010-01-25 22:33:58
@Microgen,這個代碼是鼠窩。但我會努力。我很快更新我的答案: – 2010-01-25 22:44:02
非常感謝,請讓我知道我必須改變以解決此問題 – 2010-01-25 22:50:48