去除ios移动端alert/confirm的网址(url)

在移动端使用原生的alert/confirm总是会显示网址(url),界面看起来很丑,搜索半天也找不到解决办法,在绝望的时候看到一篇文章写的很好,在此感谢http://ifindever.com/archives/260.html,还希望能帮助到大家。

最近在做小小创客 webapp,碰到一个问题,以前的版本,ios 和Android都可以通过重写webview的alert等弹窗事件来隐藏掉弹窗的标题,但是ios7之后,api被禁用了,导致ios无法重写隐藏标题:

1.通过js调用ios原生代码来实现,即:window.alert = function(str){window.local.href = " xx://str/" +str}

2.js+html+css模拟,但是为了实现alert等的阻塞执行,需要把后面的代码放入回调函数中执行

但是还是感觉这两种方式实现不太优雅,都需要对现有代码做比较大的改动,不死心,于是继续google,终于发现个好办法:

[javascript] view plain copy

  1. <span style="font-size:10px;">     <script>
  2. window.alert = function(name){
  3. var iframe = document.createElement("IFRAME");
  4. iframe.style.display="none";
  5. iframe.setAttribute("src", ‘data:text/plain,‘);
  6. document.documentElement.appendChild(iframe);
  7. window.frames[0].window.alert(name);
  8. iframe.parentNode.removeChild(iframe);
  9. }
  10. alert(‘xxx‘);
  11. </script></span>

这个方法在于重写了alert方法(confirm方法同理),不需要改动现有代码,并且解决了弹窗标题出现网址的问题。不过需要注意的是,每次在框架中执行完一个alert/confirm后,需要将框架移除,下次再重新载入,否则在chrome中会引发跨域执行,从而被chrome拦截。

这里还有confirm,重写window.confirm之后,确认和取消点击的事件都是执行取消,这时需要这样写:

confirm需要return子框架的结果:

[javascript] view plain copy

    1. var result = window.frames[0].window.confirm(name);
    2. iframe.parentNode.removeChild(iframe);
    3. return result;

地址:http://blog.csdn.net/hx_lei/article/details/51212336

时间: 2024-08-10 21:20:59

去除ios移动端alert/confirm的网址(url)的相关文章

去除移动端alert/confirm的网址(url)

移动端的alert.confirm都会显示来源的url,影响体验 下面的代码将alert和confirm重写了一遍,可去除url 参考了网上代码,完善了confirm不同状态跳转 示例代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>文档标题</title> </head> <body> <script ty

ios wkwebview js alert

1.将WKWebView的WKUIDelegate设置成self.2.将一下三个方法拷贝到项目中. 解决alert方法 -(void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler{ UIAlertC

中文 iOS/Mac 开发博客列表(网址改进)

中文 iOS/Mac 开发博客列表(网址改进) https://github.com/tangqiaoboy/iOSBlogCN 大牛blog: http://blog.devtang.com/ 唐巧 网易微博后台 .猿题库.有道云笔记.粉笔网 http://beyondvincent.com/blog/archives/ 破船 http://onevcat.com/ 王巍 Line 技术领域 :ios+unity3d http://swifter.tips 王巍 swifter 的网站 htt

Java Selenium - 几种对话框处理Alert\confirm\prompt

1. Alert , 先用常规办法定位到能触发alert的按钮 , 然后 Alert alert = driver.switchTo().alert(); alert.accept(); 如果alert框确认后,还好连续弹出alert框,继续同样操作,注意延时...不然可能因为太快,出错,坑. Alert alert = driver.switchTo().alert(); alert.accept(); Thread.sleep(1000); alert = driver.switchTo()

ios移动端浏览器点击事件失效的解决方案

点击事件失效的原因可能是因为,你用了事件代理了, 比如这样 $(document).on("click",".fd",function(){ }) 这段代码在安卓机上是没有问题的,但是iso的自带浏览器和微信浏览器和其他浏览器都会失效,原因是ios规定,事件代理的元素只能是button元素其他一律不生效 想要解决这个问题,也很简单 1. $(document).on("click","button",function(){ }

selenium python (十一)alert/confirm/prompt的处理(js中的弹出框)

webdriver中处理js所生成的alert.confirm以及prompt,采用switch_to_alert()方法定位到alert/confirm/prompt.然后使用text/accept/dismiss/send_keys进行操作 ①text:返回alert/confirm/prompt中的文字信息 ②accept:点击确认按钮 ③dismiss:点击取消按钮 ④send_keys:输入值,这个alert/confirm/prompt没有对话框就不能使用,否则会报错 eg:百度的设

【selenium自动化——alert/confirm/prompt 处理】

webdriver 中处理 JavaScript 所生成的 alert.confirm 以及 prompt 是很简单的.具体思路是使用switch_to.alert()方法定位到 alert/confirm/prompt.然后使用 text/accept/dismiss/send_keys 按需进行操做. text 返回 alert/confirm/prompt 中的文字信息.accept 点击确认按钮.dismiss 点击取消按钮,如果有的话.send_keys 输入值,这个 alert\co

alert/confirm/prompt 处理

webdriver 中处理JavaScript 所生成的alert.confirm 以及prompt 是很简单的.具体思路是使用switch_to_alert()方法定位到alert/confirm/prompt.然后使用text/accept/dismiss/send_keys 按需进行操做. text 返回alert/confirm/prompt 中的文字信息. accept 点击确认按钮. dismiss 点击取消按钮,如果有的话. send_keys 输入值,这个alert\confir

Bootstrap Modal 框 alert confirm loading

/** * Created by Administrator on 2016/5/4. */ /** * 模态窗口 */ window.Modal = { tpls:{ alert:'<div class="modal fade" tabindex="-1" role="dialog"><div class="modal-dialog modal-sm" role="document" s