腳本中出現(xiàn) window.open() access is denied - 拒絕訪問 情況一則及分析
更新時間:2007年01月09日 00:00:00 作者:
也許這個狀況有的朋友已經(jīng)知道了,但我還是把自己的分析思路寫下來給其他的朋友參考。
昨天把blog頁面另存在,在本地調(diào)試和改blog皮膚。
簡介:
我想在onload頁面加載完時用腳本控制,把Run HTML code, CopyCode, SaveCode這三個按扭動態(tài)的添加到css類名為code_textarea的多行文本框里。
狀況描述:
在非服務器端(即沒有在本地服務器下調(diào)試)按扭已經(jīng)全部出現(xiàn)在多行文本框下,但在調(diào)試腳本時(點擊Run HTML code),出現(xiàn)拒絕訪問...服務器下調(diào)試正常。
分析:
查看代碼,發(fā)現(xiàn)是這里腳本出錯,代碼如下:
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中把動態(tài)生成的div和button代碼copy出來察看,把在IE上動態(tài)加載的button拷貝到dw里看,沒有異常。包括把上面的function放在另外一個頁面上運行,依然是正常,并把這個function單獨改成了window.open('','','')還是拒絕訪問。
既然是拒絕訪問,一般情況下肯定是跨域了,但本地調(diào)試,沒有加其它的代碼呀,怎么跨域?百思不得其解。
于是想先放上blog再說了。奇怪的是放上服務器又可以了,于是我把本地的頁面放到本地服務器下運行,也是正常。這回就更蹊蹺了。說是IE bug?不成立,因為服務器可以運行。代碼問題?不成立,因為在其它頁面正常,而且沒有涉及到其它的代碼。只是funtion,說明肯定是下載的這頁有問題,難道CSDN blog輸出的HTML頁有document.domain類似的代碼嗎?
分步調(diào)試成功:
把原先所有的代碼不需要的地方全部去掉(包括Html)。最終簡化如下:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
運行依然如故。
于是再把DTD去掉。
never-online 's Tech Blog In CSDN - JS & DHTML
運行正常~~~知道原因所在了。
<!-- saved from url=(0053)http://blog.csdn.net/BlueDestiny/category/184440.aspx -->
這句害我找了半天的原因,總算刨它出來了,證明這句另存為的代碼在IE下是會有跨域存在的,而Mozilla對這句沒有任何反應。
后記:
對于另存為出現(xiàn)的注釋代碼
<!-- saved from url=....-->
放在HTML任何部分,在本地非服務器端調(diào)試都會有拒絕訪問的錯誤,而Mozilla不會。如:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<!-- saved from url=(0053)http://blog.csdn.net/BlueDestiny/category/184440.aspx -->
<input type="button" value="run" onclick="window.open('','','')"/>
</body>
</html>
昨天把blog頁面另存在,在本地調(diào)試和改blog皮膚。
簡介:
我想在onload頁面加載完時用腳本控制,把Run HTML code, CopyCode, SaveCode這三個按扭動態(tài)的添加到css類名為code_textarea的多行文本框里。
狀況描述:
在非服務器端(即沒有在本地服務器下調(diào)試)按扭已經(jīng)全部出現(xiàn)在多行文本框下,但在調(diào)試腳本時(點擊Run HTML code),出現(xiàn)拒絕訪問...服務器下調(diào)試正常。
分析:
查看代碼,發(fā)現(xiàn)是這里腳本出錯,代碼如下:
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中把動態(tài)生成的div和button代碼copy出來察看,把在IE上動態(tài)加載的button拷貝到dw里看,沒有異常。包括把上面的function放在另外一個頁面上運行,依然是正常,并把這個function單獨改成了window.open('','','')還是拒絕訪問。
既然是拒絕訪問,一般情況下肯定是跨域了,但本地調(diào)試,沒有加其它的代碼呀,怎么跨域?百思不得其解。
于是想先放上blog再說了。奇怪的是放上服務器又可以了,于是我把本地的頁面放到本地服務器下運行,也是正常。這回就更蹊蹺了。說是IE bug?不成立,因為服務器可以運行。代碼問題?不成立,因為在其它頁面正常,而且沒有涉及到其它的代碼。只是funtion,說明肯定是下載的這頁有問題,難道CSDN blog輸出的HTML頁有document.domain類似的代碼嗎?
分步調(diào)試成功:
把原先所有的代碼不需要的地方全部去掉(包括Html)。最終簡化如下:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
運行依然如故。
于是再把DTD去掉。
運行正常~~~知道原因所在了。
<!-- saved from url=(0053)http://blog.csdn.net/BlueDestiny/category/184440.aspx -->
這句害我找了半天的原因,總算刨它出來了,證明這句另存為的代碼在IE下是會有跨域存在的,而Mozilla對這句沒有任何反應。
后記:
對于另存為出現(xiàn)的注釋代碼
<!-- saved from url=....-->
放在HTML任何部分,在本地非服務器端調(diào)試都會有拒絕訪問的錯誤,而Mozilla不會。如:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<!-- saved from url=(0053)http://blog.csdn.net/BlueDestiny/category/184440.aspx -->
<input type="button" value="run" onclick="window.open('','','')"/>
</body>
</html>
相關(guān)文章
Function.prototype.apply()與Function.prototype.call()小結(jié)
JavaScript 中,某個函數(shù)的參數(shù)數(shù)量是不固定的,因此要說適用條件的話,當你的參數(shù)是明確知道數(shù)量時,用 call,而不確定的時候,用 apply,然后把參數(shù) push 進數(shù)組傳遞進去。當參數(shù)數(shù)量不確定時,函數(shù)內(nèi)部也可以通過 arguments 這個數(shù)組來便利所有的參數(shù)2016-04-04關(guān)于javascript中的parseInt使用技巧
前面好幾次遇到JavaScript中parseInt函數(shù)把字串轉(zhuǎn)為數(shù)字,前面遇到過幾次問題,然后就換其它方法進行比較。2009-09-09基于KMP算法JavaScript的實現(xiàn)方法分析
本篇文章介紹了,基于KMP算法JavaScript的實現(xiàn)方法分析。需要的朋友參考下2013-05-05JS函數(shù)實現(xiàn)動態(tài)添加CSS樣式表文件
有時會使用一些改變心情方面的想法,比如JS函數(shù)實現(xiàn)動態(tài)添加CSS樣式表文件,這樣就可以做到隨機加載心情文件,需要的朋友可以了解下2012-12-12