never-online 's Tech Blog In CSDN

never online - Everlasting love for angela.

用户操作
[即时聊天] [发私信] [加为好友]
never-onlineID:BlueDestiny
157638次访问,排名512,好友17人,关注者36人。
在京城
BlueDestiny的文章
原创 114 篇
翻译 0 篇
转载 8 篇
评论 246 篇
never-online的公告
Web:
www.never-online.net
Email:
BlueDestiny##126.com
QQ:
77091373
最近评论
liseo1:
网络营销策划 网络公关 品牌管理 搜索引擎危机公关 搜索引擎排名 网站优化 软文发布 QQ:297261337 手机:13701171386
堆高车
堆垛车
liseo1:
网络营销策划 网络公关 品牌管理 搜索引擎危机公关 搜索引擎排名 网站优化 软文发布 QQ:297261337 手机:13701171386
堆高车
堆垛车
liseo1:
网络营销策划 网络公关 品牌管理 搜索引擎危机公关 搜索引擎排名 网站优化 软文发布 QQ:297261337 手机:13701171386
堆高车
堆垛车
liseo1:
网络营销策划 网络公关 品牌管理 搜索引擎危机公关 搜索引擎排名 网站优化 软文发布 QQ:297261337 手机:13701171386
堆高车
堆垛车
liseo1:
网络营销策划 网络公关 品牌管理 搜索引擎危机公关 搜索引擎排名 网站优化 软文发布 QQ:297261337 手机:13701171386
堆高车
堆垛车
文章分类
收藏
相册
icon
JS & DHTML
Dhteumeuleu
Douglas Crockford
Webfx
常去之地
ASP.Net
MSDN英文
XML指南
XML的大本营
博客园
正则表达式
我的网站
我网站的Blog(RSS)
友情链接
KimSoft的blog(RSS)
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 脚本中出现 window.open() access is denied - 拒绝访问 情况一则及分析收藏

新一篇: 用XHTML CSS做漂亮的阴影菜单  | 旧一篇: 花了点时间把blog的皮肤和公告脚本改了一下,兼容Mozilla

也许这个状况有的朋友已经知道了,但我还是把自己的分析思路写下来给其他的朋友参考。

昨天把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)。最终简化如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0053)http://blog.csdn.net/BlueDestiny/category/184440.aspx -->
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>never-online 's Tech Blog In CSDN - JS & DHTML</TITLE>
<META content="MSHTML 6.00.2800.1400" name=GENERATOR>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript">
function addEvent(o,w,f) {
  if (document.all) {
    o.attachEvent('on'+w, f);
  } else {
    o.addEventListener(w, f, false);
  }
}
function fnRunHtmlCode(obj)
{
    var wnd = window.open('', '', '');
};
function fnReadyToRunHTMLcode() {
    insertRunHtmlBtn(document.getElementById("demo"));
    function insertRunHtmlBtn(obj) {
      var wrapper = document.createElement("DIV");
      wrapper.style.margin="10px 0 10px 0";
      var runBtn = document.createElement("INPUT");
      runBtn.type = "button";
      runBtn.value = "Run HTML Code";
      addEvent(runBtn, "click", function() { fnRunHtmlCode(obj) });
      obj.parentNode.insertBefore(wrapper, obj.nextSibling);
      wrapper.appendChild(runBtn);
    }
  //} catch (ex) {}
}
onload = fnReadyToRunHTMLcode;
</script>
<div class="postText">
<textarea class="code_textarea" id="demo">
</textarea>
</div>
</body>
</html>

运行依然如故。
于是再把DTD去掉。

运行正常~~~知道原因所在了。
<!-- saved from url=(0053)http://blog.csdn.net/BlueDestiny/category/184440.aspx -->
这句害我找了半天的原因,总算刨它出来了,证明这句另存为的代码在IE下是会有跨域存在的,而Mozilla对这句没有任何反应。

后记:
对于另存为出现的注释代码
<!-- saved from url=....-->
放在HTML任何部分,在本地非服务器端调试都会有拒绝访问的错误,而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>

发表于 @ 2006年07月21日 16:25:00|评论(loading...)|编辑

新一篇: 用XHTML CSS做漂亮的阴影菜单  | 旧一篇: 花了点时间把blog的皮肤和公告脚本改了一下,兼容Mozilla

评论

#磁盘碎片 发表于2006-07-21 20:11:00  IP: 61.167.60.*
坦白的讲,你的弹出窗口在每次访问的时候都回弹出
#BlueDestiny 发表于2006-07-21 20:19:00  IP: 219.159.91.*
那我还是先注释掉吧,我这里是正常的(一天弹一次)...
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © never-online