也許這個狀況有的朋友已經知道了,但我還是把自己的分析思路寫下來給其他的朋友參考。
昨天把blog頁面另存在,在本地調試和改blog皮膚。
簡介:
我想在onload頁面加載完時用腳本控制,把Run HTML code, CopyCode, SaveCode這三個按扭動態的添加到css類名為code_textarea的多行文本框裡。
狀況描述:
在非服務器端(即沒有在本地服務器下調試)按扭已經全部出現在多行文本框下,但在調試腳本時(點擊Run HTML code),出現拒絕訪問...服務器下調試正常。
分析:
查看代碼,發現是這裡腳本出錯,代碼如下:
function fnRunHtmlCode(obj)
{
//try {
//if (typeof(obj)=="string") obj=document.getElementById(obj);
var wnd = window.open('', "_blank", '');
wnd.document.open('text/html', 'replace');
wnd.document.writeln(obj.value);
wnd.document.close();
//} catch(ex) { alert(ex.message) };
};
用Mozilla打開,運行正則,並且腳本沒有任何錯誤。弄了將半個小時,我把其余的代碼都刪了,在Mozilla中把動態生成的div和button代碼copy出來察看,把在IE上動態加載的button拷貝到dw裡看,沒有異常。包括把上面的function放在另外一個頁面上運行,依然是正常,並把這個function單獨改成了window.open('','','')還是拒絕訪問。
既然是拒絕訪問,一般情況下肯定是跨域了,但本地調試,沒有加其它的代碼呀,怎麼跨域?百思不得其解。
於是想先放上blog再說了。奇怪的是放上服務器又可以了,於是我把本地的頁面放到本地服務器下運行,也是正常。這回就更蹊跷了。說是IE bug?不成立,因為服務器可以運行。代碼問題?不成立,因為在其它頁面正常,而且沒有涉及到其它的代碼。只是funtion,說明肯定是下載的這頁有問題,難道CSDN blog輸出的HTML頁有document.domain類似的代碼嗎?
分步調試成功:
把原先所有的代碼不需要的地方全部去掉(包括Html)。最終簡化如下: