最近做一个功能,测试环境测试没问题,google浏览器测试也没问题,结果上生产发现google浏览器竟然用不了。查看控制台发现控制台报错:

Ignored call to 'confirm()'. The document is sandboxed, and the 'allow-modals' keyword is not set.

  功能很简单,就是弹出一个确认对话框,但是生产环境google上竟然弹不出来,一直报上面问题。后来分析生产环境的页面是嵌入到一个iframe中的,iframe中有一属性“sandbox”,值如果包含“allow-modals”就没有问题了。

  比如:

<iframe sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" frameborder="0">

  不过这个iframe不是我们开发,也不是我们负责,解决方案:

  在页面加载是执行以下代码:

$("iframe").each(function() {
var sandbox=this.sandbox.value;
if(sandbox.length>5){//此处也可以是>0,由于sandbox的属性值都是由allow打头的,所以这里我选择5
if(this.sandbox.value.indexOf("allow-modals")==-1){
this.sandbox += ' allow-modals';
}
}
})

附:

sandbox属性是指带有额外限制的 <iframe>。sandbox 是 HTML5 中的新属性。

如果被规定为空字符串(sandbox=""),sandbox 属性将会启用一系列对行内框架中内容的额外限制。

sandbox 属性的值既可以是一个空字符串(应用所有的限制),也可以是空格分隔的预定义值列表(将移除特定的限制)。

sandbox主要是为了安全,它可以防止如下操作:

  • 访问父页面的DOM(从技术角度来说,这是因为相对于父页面iframe已经成为不同的源了)
  • 执行脚本
  • 通过脚本嵌入自己的表单或是操纵表单
  • 对cookie、本地存储或本地SQL数据库的读写

常见的sandbox属性:

描述
"" 应用以下所有的限制。
allow-same-origin 允许将内容作为普通来源对待。如果未使用该关键字,嵌入的内容将被视为一个独立的源
allow-top-navigation 允许 iframe 内容从包含文档导航(加载)内容。
allow-forms 允许嵌入的浏览上下文可以提交表单。如果该关键字未使用,该操作将不可用
allow-scripts 允许嵌入的浏览上下文运行脚本(但不能window创建弹窗)。如果该关键字未使用,这项操作不可用
allow-modals 允许内嵌浏览环境打开模态窗口(比如alert(),confirm())
allow-orientation-lock 允许内嵌浏览环境禁用屏幕朝向锁定(译者注:比如智能手机、平板电脑的水平朝向或垂直朝向)
allow-pointer-lock 允许内嵌浏览环境使用 Pointer Lock API
allow-popups 允许弹窗 (类似window.open, target="_blank", showModalDialog)。如果没有设置该属性,相应的功能将静默失效
allow-popups-to-escape-sandbox 允许沙箱文档打开新窗口,并且不强制要求新窗口设置沙箱标记。例如,这将允许一个第三方的沙箱环境运行广告开启一个登陆页面,新页面不强制受到沙箱相关限制
allow-presentation 允许嵌入者控制是否iframe启用一个展示会话
allow-top-navigation 嵌入的页面的上下文可以导航(加载)内容到顶级的浏览上下文环境(browsing context)。如果未使用该关键字,这个操作将不可用。

参考:

https://stackoverflow.com/questions/32119446/ignored-call-to-alert-the-document-is-sandboxed-and-the-allow-modals-key/33262772

https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/iframe

google浏览器:Ignored call to 'confirm()'. The document is sandboxed, and the 'allow-modals' keyword is not set的更多相关文章

  1. 利用Google浏览器调试js代码

    1.js有两种引入方式,外链和内嵌: 内嵌在浏览中直接调试,外链要在断点处写debugger; 示例代码: <!DOCTYPE html> <html lang="en&q ...

  2. js部分知识整理,google浏览器的代码调试

    整理一些学过的js知识点,包括js中3个括号的含义,this的使用,递归,google浏览器的代码调试.Location的属性及常用方法,window对象常用方法,open方法等. js括号 在js中 ...

  3. nodejs 使用Google浏览器进行可视化调试——Node Inspector工具

    1.npm安装Node Inspector工具,全局安装 命令行执行npm install -g node-inspector 2.启动Node Inspector工具,命令行执行 node-insp ...

  4. 彻底解决Google浏览器CSS居中问题

    div做的界面时,又出现CSS hack(CSS兼容浏览器问题)在IE内核浏览器或者firefox浏览器中都能居中,没有居中的可以用其特殊标签来设定居中,如下划线 _ IE6优先识别,!importa ...

  5. 下载Google浏览器(Google Chrome)离线安装包方法

    Chrome浏览器默认是在线安装的,但由于网络的原因,有时很久也不能完成安装.其实Chrome官方是提供离线安装包的.具体地址如下: 稳定版:http://www.google.com/chrome/ ...

  6. google 浏览器使用技巧(一)

    google 浏览器使用技巧(一) google 浏览器使用技巧 1. 调整地址栏的宽度 当安装多个插件的时候,默认插件会隐藏,所以使用起来很麻烦.在chrome 浏览器的配置中没有找到相应的配置.一 ...

  7. Google浏览器解决编码乱码问题

    新版google浏览器编码乱码没有设置的入口,怎么办呢?. 步骤一: 可以下载goole的插件,名为charset,下载后的文件名为Charset_v0.4.1 步骤二: google右上角-> ...

  8. Google浏览器——AxureRP_for_chorme_0_6_2添加

    准备 链接:https://share.weiyun.com/5PVwSMA Google浏览器版本 步骤 压缩解压 首先把需要安装的第三方插件,后缀.crx 改成 .rar,然后解压,得到一个文件夹 ...

  9. ubuntun 18.04 安装google浏览器

    ---恢复内容开始--- 一:下载谷歌浏览器镜像源 sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/ap ...

随机推荐

  1. mysql插入一万条数据

    定义一个存储过程 mysql> delimiter $$ mysql> create procedure ptest()    -> begin    -> declare p ...

  2. derby_学习_01_常用命令

    一.常用命令 1.创建数据库 connect 'jdbc:derby://localhost:1527/jfcsdb;create=true'; 2.查看表 show tables; 二.参考资料 1 ...

  3. metaclass 了解一下

    创建类的两种方式 方式一: class Foo(object,metaclass=type): CITY = "bj" def func(self,x): return x + 1 ...

  4. Apache POI实现excel导出

    链接:http://poi.apache.org/ Excel数据导出步骤: 使用poi 完成账户数据的导出功能 导入poi  jar包并添加到classpath中 1.查询数据 2.定义导出头 St ...

  5. Redis底层探秘(四):整数集合及压缩列表

    整数集合 整数集合(intset)是集合键的底层实现之一,当一个集合只包含 整数值元素,并且这个集合的元素数量不多时,Redis就会使用郑书记和作为集合键的底层实现. 整数集合的实现 整数集合是red ...

  6. LeetCode Longest Harmonious Subsequence

    原题链接在这里:https://leetcode.com/problems/longest-harmonious-subsequence/description/ 题目: We define a ha ...

  7. npm init node 通过指令创建一个package.json文件及npm安装package.json

    描述包的文件是package.json文件. 一个这样的文件,里面的信息还是挺大的.我们可以放弃手动建立.为了练手我们有命令行来建一个这样的包; 完成name,varsion....license项的 ...

  8. Unity 5 官方打包管理工具 Asset Bundle Manager

    http://blog.csdn.net/suifcd/article/details/51570003 Unity5在Asset bundle 打包管理上采用了全新的方式,不需要再对每个文件进行MD ...

  9. 五、Jmeter--关联(正则表达式)

    一.什么时候需要关联? 1. 服务器返回的动态变化而且对业务有影响的需要关联. 2. 回放脚本看是否正确,检查下脚本,是否有动态数据影响 3. 一大串字符串,每次请求参数是否有变化 4. 可以找开发问 ...

  10. FPGA 竞争与冒险

    一,概念 在数字电路设计时,无论是组合.时序,还是FPGA电路中,都需要考虑竞争冒险现象(Race and Competition). 竞争:由于信号在传输和处理过程中经过不同的逻辑门.触发器或逻辑单 ...