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

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

昨天把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)。最终简化如下:

never-online 's Tech Blog In CSDN - JS & DHTML

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;

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

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

never-online 's Tech Blog In CSDN - JS & DHTML

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('', "_blank", '');
wnd.document.open('text/html', 'replace');
wnd.document.writeln(obj.value);
wnd.document.close();
};
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;

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

运行正常~~~知道原因所在了。
<!-- 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>

您可能感兴趣的文章:

  • javascript window.opener的用法分析
  • javascript弹出窗口 window.open使用方法以及参数说明分析篇
  • JS window.opener返回父页面的应用
  • js中的window.open返回object的错误的解决方法
  • window.open被浏览器拦截后的自定义提示效果代码
  • window.open()弹出居中的窗口
  • window.open的功能全解析
  • window.open不被拦截的实现代码

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

相关文章

  • 2010-04-04JavaScript toFixed() 方法
  • 2016-06-06大型JavaScript应用程序架构设计模式
  • 2015-06-06简述JavaScript中正则表达式的使用方法
  • 2013-07-07JavaScript常用全局属性与方法记录积累
  • 2014-12-12js数组的操作指南
  • 2015-01-01Javascript基础教程之数据类型 (字符串 String)
  • 2016-05-05JavaScript基础教程——入门必看篇
  • 2015-06-06在浏览器中打开或关闭JavaScript的方法
  • 2013-01-01js中parseFloat(参数1,参数2)定义和用法及注意事项
  • 2012-12-12JavaScript 盒模型 尺寸深入理解

最新评论

(0)

相关推荐

  • window.open不被拦截的实现代码

    复制代码 代码如下: $("#last").click(function(){ var w=window.open(); setTimeout(function(){ w.location="http://www.baidu.com"; }, 1000); return false; });

  • javascript window.opener的用法分析

    window.opener 的用法 window.opener 返回的是创建当前窗口的那个窗口的引用,比如点击了a.htm上的一个链接而打开了b.htm,然后我们打算在b.htm上输入一个值然后赋予a.htm上的一个id为"name"的textbox中,就可以写为: window.opener.document.getElementById("name").value = "输入的数据"; 对于javascript中的window.opener没

  • JS window.opener返回父页面的应用

    JS代码: window.open(): 而当支付成功后,需要关闭支付平台支付成功界面,并在客户端加载客户端支付成功页面,JS代码: window.opener.location.href=url;window.close();

  • javascript弹出窗口 window.open使用方法以及参数说明分析篇

    window.open使用方法以及参数说明一.window.open()支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+ 二.基本语法: window.open(pageURL,name,parameters) 其中: pageURL 为子窗口路径 name 为子窗口句柄 parameters 为窗口参数(各参数用逗号分隔) 三.各项参数 其中yes/no也可使用1/0:pixel value为具体的数值,单位象素. 参数 | 取值范围 |

  • window.open被浏览器拦截后的自定义提示效果代码

    现在越来越多的浏览器有拦截弹出窗口的功能.广告弹出来给拦掉了就无所谓,要是客户在付款时给拦掉了可就不能乱算了. Gmail的"哎呀"算是经典,可是,前天心云给出了更帅的提示=.= 记得打开浏览器拦截后 测试一下,在线阅读器里不知道代码会不会给过滤..代码在下边,其实没什么技术含量滴.挖哈哈... 复制代码 代码如下: window._open=window.open;  window.open=function(sURL,sName,sFeatures,bReplace){    if

  • window.open()弹出居中的窗口

    Javascript代码 function openwindow(url,name,iWidth,iHeight) {  var url;                                 //转向网页的地址;  var name;                           //网页名称,可为空;  var iWidth;                          //弹出窗口的宽度;  var iHeight;                        //

  • js中的window.open返回object的错误的解决方法

    解决window.open后返回object的错误 复制代码 代码如下: <a href="javascript:void(window.open('','','width=200,height=200'))">window.open()</a> 只在js的外层加上一个void不带返回参数的声明. 顺便在这里将window.open函数的参数使用也列出来: window.open函数参数列表 window = object.open([URL ][, name

  • window.open的功能全解析

    [1.最基本的弹出窗口代码]  其实代码非常简单:  <SCRIPT LANGUAGE="javascript">  <!--  window.open ('page.html')  -->  </SCRIPT>  因为着是一段javascripts代码,所以它们应该放在<SCRIPT LANGUAGE="javascr ipt">标签和</script>之间.<!-- 和 -->是对一些版本低

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

    也许这个状况有的朋友已经知道了,但我还是把自己的分析思路写下来给其他的朋友参考. 昨天把blog页面另存在,在本地调试和改blog皮肤. 简介: 我想在onload页面加载完时用脚本控制,把Run HTML code, CopyCode, SaveCode这三个按扭动态的添加到css类名为code_textarea的多行文本框里. 状况描述: 在非服务器端(即没有在本地服务器下调试)按扭已经全部出现在多行文本框下,但在调试脚本时(点击Run HTML code),出现拒绝访问...服务器下调试正

  • yum 安装memcache permission denied(拒绝访问) 问题

    yum 安装memcache permission denied(拒绝访问) 问题 使用yum 安装memcache 出现permission denied(拒绝访问), 是因为selinux安全问题. 解决办法,简单的关闭或者降低selinux的安全级别. 修改  /etc/selinux/config文件(redhat 类似系统下) selinux=0 centOS cmake 安装mysql出现cmake commond not found 问题 今天安装最新的mysql 5.5.19 ,

  • 全面解析jQuery中的$(window)与$(document)的用法区别

    [window对象] 它是一个顶层对象,而不是另一个对象的属性,即表示浏览器中打开的窗口.   1.属性 defaultStatus 缺省的状态条消息 document 当前显示的文档(该属性本身也是一个对象) frame 窗口里的一个框架((FRAME>)(该属性本身也是一个对象) frames array 列举窗口的框架对象的数组,按照这些对象在文档中出现的顺序列出(该属性本身也是一个 对象) history 窗口的历史列表(该属性本身也是一个对象) length 窗口内的框架数 locat

  • shell脚本定时统计Nginx下access.log的PV并发送给API保存到数据库

    1,统计PV和IP 统计当天的PV(Page View) cat access.log | sed -n /`date "+%d\/%b\/%Y"`/p |wc -l 统计某一天的PV cat access.log | sed -n '/20\/Sep\/2018/p' | wc -l 查看日志中访问次数最多的前10个IP cat access.log.1 |cut -d ' ' -f 1 | sort |uniq -c | sort -nr | awk '{print $0 }' |

  • Shell脚本中多命令逻辑执行顺序的方法详解

    Linux中可以使用分号";".双and号"&&"和双竖线"||"来连接多个命令.单"&"符号也算命令连接符号,只不过它是将其前面的命令放入后台执行,所以可以变相地实现命令并行执行. 1.分号";" command1 ; command2 命令之间没有逻辑关系.分号连接的命令会按照顺序从前向后依次执行,但分号两端的命令之间没有任何逻辑关系,所有写出来的命令最终都会被执行,即使分号前面

  • Linux Shell脚本中获取本机ip地址方法

    方法一:ifconfig -a ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:" 命令解析 ifconfig -a  和window下执行此命令一样道理,返回本机所有ip信息 grep inet                  截取包含ip的行 grep -v 127.0.0.1      去掉本地指向的那行 grep -v inet6             去掉

  • 在unity脚本中控制Inspector面板的参数操作

    在编写脚本的过程中我们会遇到一些小问题 比如一个的变量 为了在其他脚本中可以调用 我们需要写成public类型的 这样的话在Inspector面板中会出现此变量 这篇博客会给大家介绍一些方法去避免这些小问题 1.[Header(" ")] 这个的作用是给它下面的所有变量一个总标题 2.[Tooltip("")] 这个的作用是给下面的第一行(紧邻的语句)注释 这个注释和双斜杠的注释不同 这个注释的效果是在unity中鼠标拖到变量的名字上 他会出现注释(括号的双引号中的

  • 详解Shell脚本中^M的问题和解决方案

    目录 ^M 是什么? 本质原因 常用工具 在开发过程中,有时候不小心将Windows本地创建的shell脚本(以 .sh 结尾的脚本),传到linux系统中,通过 vi或者view命令查看文件时,发现在末尾发现出现了很多^M字符. ^M 是什么? 这个字符就是换行符.是由于跨平台解析的原因.因为window和Linux下对行尾的换行的定义不同Windows: \r\nLinux/Unix: \nMac: \r 例子 出现的原因:在DOS/Windows里,文本文件的换行符为\r\n,而在nix系

  • Shell脚本中执行sql语句操作mysql的5种方法

    对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的结果美化,需要进一步完善和调整.以下为具体的示例及其方法. 1.将SQL语句直接嵌入到shell脚本文件中 复制代码 代码如下: --演示环境  [root@SZDB ~]# more /etc/issue  CentOS release 5.9 (Final)  Kernel \r on an \

  • javascript 中设置window.location.href跳转无效问题解决办法

    javascript 中设置window.location.href跳转无效问题解决办法 问题情况 JS中设置window.location.href跳转无效 代码如下: <script type="text/javascript"> function checkUser() { if(2!=1){ window.location.href="login.jsp" rel="external nofollow" rel="e

随机推荐