首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VoiceOver不能在Chrome中读取window.alert中的文本

基础概念

VoiceOver 是 macOS 上的一个屏幕阅读器,用于帮助视力障碍的用户访问计算机界面。Chrome 是一个流行的网页浏览器。window.alert 是一个 JavaScript 函数,用于在浏览器中显示一个模态对话框,通常包含一条消息和一个“确定”按钮。

问题原因

VoiceOver 在 Chrome 中可能无法正确读取 window.alert 中的文本,这通常是由于 Chrome 浏览器对 alert 对话框的渲染和处理方式导致的。VoiceOver 可能无法正确识别或获取 alert 对话框中的文本内容。

解决方法

方法一:使用自定义模态对话框

为了避免 window.alert 的限制,可以使用自定义的模态对话框,并确保 VoiceOver 能够正确读取其中的文本。以下是一个简单的示例:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Custom Alert</title>
    <style>
        .modal {
            display: none;
            position: fixed;
            z-index: 1;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: auto;
            background-color: rgba(0,0,0,0.4);
        }
        .modal-content {
            background-color: #fefefe;
            margin: 15% auto;
            padding: 20px;
            border: 1px solid #888;
            width: 80%;
        }
        .close {
            color: #aaa;
            float: right;
            font-size: 28px;
            font-weight: bold;
        }
        .close:hover,
        .close:focus {
            color: black;
            text-decoration: none;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <button onclick="showModal()">Show Alert</button>

    <div id="myModal" class="modal">
        <div class="modal-content">
            <span class="close" onclick="closeModal()">&times;</span>
            <p>This is a custom alert message.</p>
        </div>
    </div>

    <script>
        function showModal() {
            document.getElementById('myModal').style.display = 'block';
            document.getElementById('myModal').focus();
        }

        function closeModal() {
            document.getElementById('myModal').style.display = 'none';
        }

        window.onclick = function(event) {
            if (event.target == document.getElementById('myModal')) {
                closeModal();
            }
        };
    </script>
</body>
</html>

在这个示例中,我们创建了一个自定义的模态对话框,并通过 JavaScript 控制其显示和隐藏。这样可以确保 VoiceOver 能够正确读取对话框中的文本。

方法二:使用 window.confirmwindow.prompt

如果需要用户交互,可以考虑使用 window.confirmwindow.prompt,这些方法在某些情况下可能比 window.alert 更容易被 VoiceOver 识别。

代码语言:txt
复制
window.confirm("Are you sure?");
window.prompt("Enter your name:");

参考链接

通过以上方法,可以有效解决 VoiceOver 在 Chrome 中无法读取 window.alert 中文本的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 关于拖拽功能在IE11 、Firefox和Safari兼容问题

    拖拽功能不兼容主要有4大主要原因: 1是eventpath属性引起bug(ie,firebox,safari) 2是eventdataTransfer.setData属性(ie,firebox...) 3是firefox在拖动时候会打开一个新窗口 (firbox) 4是ie11不支持onclick属性方法 ; ie11 里元素对象attributes排序和其他浏览器不同, ie11 ...remove()方法work (ie) 对于原因1解决方案 其中IE11 压根就不支持path属性,firefox和Safari还勉强通过hack方式获取到path,获取方式如下: const...('click', function () {}) 如果你业务代码里包含 获取对象attributes代码,比如 event.target.attributes[n].xxx 在ie11attributes...解决这个问题 ,我是通过遍历attributes 找到符合我要代替之前写死attributes顺序 针对ie11 remove()work情况,可以用代码 parent.removeChild

    3.3K30

    如何测试你做项目的可访问性

    可以将它合并到自动化测试套件,在命令行运行 浏览器扩展 aXe(https://chrome.google.com/webstore/detail/axe/lhdoppojpmngadmnindnejefpokejbdd...一般情况,表单控件需要有以下信息: Role 角色,比如是编辑文本、单选框、复选框、还是按钮 Name/Label 名字,用来说明字段含义。...比如 Mac 上 VoiceOver(https://webaim.org/articles/voiceover/),在“系统偏好设置/辅助功能/VoiceOver启用它。 ?...比如chrome://settings/里字号可以设置“特小、小、、大、特大” 360课程培训(https://www.so.com/zt/training.html#/?...下一步 本文里其实已经暴露出了几个可访问性问题了,诸如已选条件bug、自定义下拉框/弹层键盘可访问性、屏幕阅读器导航信息精准。

    1.9K10

    如何利用CC++逐行读取txt文件字符串(可以顺便实现文本文件复制)

    但是,请一定注意linux和Windows文件格式区别,比如: 1. 当linux上代码读取Windows文件格式时, 读取结果每行都会多一个\r, 想想为什么。...当Windows上代码读取linux格式文件时, 读取结果会显示只有一行, 想想为什么。...感觉C读取方法有点丑陋,还是看看C++吧(只要文件格式Windows/linux和编译平台Windows/linux对应一致, 就放心用吧): #include #include...<"no such file" << endl; } return 0; } 结果, 2.txt和1.txt内容完全一致,你可以用Beyond Compare比较一下,我比较过了。...out << line << endl; } } int main() { fileCopy("1.txt", "2.txt"); return 0; } 当然了,上述程序只能针对文本文件

    4.2K30

    京喜小程序首页无障碍优化实践

    更多属性可以参考 Using Aria States and properties,部分属性可能在小程序设置生效。...更多 role 可以参考 Using Aria Widget Roles,部分 role 可能在小程序设置生效。 因此,无障碍优化便可以借助读屏软件,结合 WAI-ARIA 特性进行开发。...隐藏元素读取 如果希望部分内容被读出来,可以使用 aria-hidden='true' 来声明,这样读屏时就会忽略这些元素。...场景实现 非文本元素读取 首页头部京喜 Logo 和文字是一整张图片。聚焦后,读屏软件默认会读成图像,无法将图片中文字朗读出来。这样无障碍体验是非常差。 ?...价格读取差异 ? ¥259.2 由于整数部分和小数部分字体大小不同,价格文本是用多个标签实现

    1.3K31

    第二十八课 区块链应用DAPP如何探测MetaMask账号和登录状态?

    , 加密猫购买和账户检测流程 1)是否安装MetaMask插件 点击https://www.cryptokitties.co/ 访问加密猫网站时,如果对应PC浏览器chrome/360浏览器没有安装...1) 增加合约部署网络配置 truffle.js 增加测试ropsten网络和mainnet主网配置。另外需要增加.env文件用于读取助记词。...*/ var infura_apikey = "8ce5ebd357144bef8dceae3de1915e29"; /*读取.env文件配置助记词*/ var mnemonic_ropsten =...不存在MetaMask插件 当CHROME浏览器不存在MetaMask时,会提示需要安装MetaMask插件。...4) 测试CHROMEMetaMask处于logout状态时 当MetaMask处于LOGOUT状态时, image.png 更新主页会有登录提示: image.png 5) 当MetaMask

    2.6K30

    如何在 SwiftUI 视图中显示应用图标和版本

    在本文中,我将展示如何创建一个可访问 SwiftUI 视图,既能显示应用图标和版本,又能在各种文本大小和外观下看起来都很好:获取应用图标构建视图第一步是从主包获取应用图标。...类似之前步骤,我们需要读取应用 Info.plist CFBundleShortVersionString 键值:AppVersionProvider.swiftimport Foundationenum...我们使用 fixedSize() 修饰符确保应用图标和 VStack 视图高度相同。最后,我们将所有子视图组合成一个可访问元素,并为其提供标签,以便为 VoiceOver 用户提供更好体验。...最终结果是一个在各种文本大小下都看起来很好视图:在应用显示版本信息视图Copy codeContentView.swiftimport SwiftUIstruct ContentView: View...接着,我们采用类似的方法,通过读取 Info.plist 文件 CFBundleShortVersionString 键值,获取应用版本信息。

    17522

    如何在 SwiftUI 中使用 AccessibilityCustomContentKey 修饰符

    本篇文章来聊聊另一个新 API,我们可以使用 SwiftUI 新 accessibilityCustomContent 视图修饰符提供自定义辅助功能内容。...不需要执行任何操作即可使你 UserView 可访问。UserView 内每个文本片段都对辅助技术(如VoiceOver和Switch Control)可访问。...通常,我们使用不同字体和颜色在视觉上为文本设置优先级,但是如何在辅助技术实现相同影响呢?...你自定义内容重要性级别。它可以是默认或高。VoiceOver 会立即读取具有高重要性内容,而具有默认重要性内容仅在用户使用垂直滑动访问更多数据时以冗长模式朗读。...例如,VoiceOver会立即读取具有高重要性数据,并允许用户使用垂直滑动根据需要访问具有默认重要性数据。

    10610

    企鹅 FM H5 无障碍优化总结

    色弱、高度近视、色盲…都算是视障人群,并不是所有视障用户都会使用 voiceover 或 talkback 之类工具才能浏览页面。色彩对比度友好也应该成为页面要求一部分。...基本流程 FM 页面是一个高度组件化页面,而且内容导向,没有特别多复杂动画承载视觉效果,按照以下步骤优化页面: 保证语义化 html 标签 加 role、加 aria-* 辅助 voiceover...tools - Audits Rules 使用工具和开发流程结合 有不少 chrome 插件甚至 chrome 本身就带有无障碍检验能力,开发者可以使用其中工具,比如: Chrome dev...开发者可以通过命令行工具直接得到检测结果: 06.jpg 有的页面没有做过无障碍优化,可能在命令行里看检查情况伤眼。...,一个视频超过10分钟,快速了解无障碍 A11ycasts with Rob Dodson

    1.7K21

    国庆节前端技术栈充实计划(2):抽空打好JavaScript基础

    window.alert(message); 因为 window是一个全局对象,所以你也可以用下面这种简略表达方式: alert(message); 那么 window.alert()会做什么呢?...为了创造出更好用户体验,通常鼓励使用alert来支持阻止用户与页面进行交互其他方法。不过,它在调试方面是很有用。...使用Chrome 46.0, window.alert()在一个 里被阻止了除非它沙盒属性值为allow-modal。...使用Chrome 46.0,这个方法在 里会被阻止除非它沙盒属性值为allow-modal。...); Image file 如果你已经有一个图片文件,包含了你想要文本并且已经放到服务器上了,你可以添加这个图片URL然后把这个图片添加到文档像下面这样: var img = new Image(

    1.3K30

    【JS】JavaScript 基础入门

    (3)DOM:Document Object Model(文档对象模型),此处文档暂且理解为 html,html 加载到浏览器内存,可以使用 JS DOM 技术对内存 html 节点进行修改...JavaScript 是因特网上最流行脚本语言,并且可在所有主要浏览器运行,比如: Internet Explorer、 Maxthon、Mozilla、Firefox、Netscape、Chrome...; var x = 'test' window.alert(x) var old_alert = window.alert window.alert = function(){} //失效 window.alert...BOM:浏览器对象模型, IE6~11 Chrome Safari Firefox Opera ---- window window 代表浏览器窗口, window.alert(1) undefined...>   提交表单 iframe 通过一个隐藏 iframe 可实现刷新页面进行提交表单,form 表单 target 设置为 iframe name 名称,form 提交表单给当前页面的

    26430

    iOS 12 安全更新 | 一个月内安装率超 50%,越狱和漏洞一个也没少

    聊天加密:不论是iMessage 发送文本聊天还是应用程序记录位置数据亦或是 FaceTime 视频电话,只要没有授权密码或指纹或面部解锁,都无法被他人读取; 5....锁屏超过一小时后,屏蔽 USB 接入;避免物理接触导致恶意数据读取; 设置方法:在设置中找到 Touch ID(Face ID)或密码选项,将 USB 访问按钮关闭。...这个过程,需要骗过 Siri,并修改 iOS VoiceOver 功能,绕过验证过程。...此外,更新还包含针对新 iPhone XS 用户所遇到充电和 WiFi bug 修复程序。 其实,近几年 iPhone 密码绕过问题已经屡见鲜。...iOS 9 和 iOS 10 都出现过密码绕过问题,利用也是类似的 Siri 和 VoiceOver 漏洞。

    1K50

    如何在 Chrome 执行 JavaScript 代码

    下面来介绍如何在 Chrome 打开开发者工具,以及如何在开发者工具运行调试 JavaScript 代码。 打开开发者工具 Chrome 开发者工具界面如下图所示。...右键“检查” 在 Chrome 打开一个页面之后,我们可以在页面单击鼠标右键,然后在菜单中选择“检查”,这样就可以打开开发者工具了。...Chrome snippets 小脚本来执行。...window.alert("公众号:村雨遥"); console.log("公众号:村雨遥"); 在创建 Snippet 脚本上单击鼠标右键,我们可以进行如下操作: Run:运行,执行我们创建脚本...总结 以上就是今天所有内容了,主要介绍了如何打开 Chrome 开发者工具,并且利用开发者工具如何来执行 JavaScript 脚本。

    5.2K20

    jscall与apply用法

    、8、6,Maxthon、Chrome、FF、Opera、Safari、360等浏览器测试过,结果都是后者:baseB member) 至此,机器是不会错,这就需要我们深入分析 我们可能会很容易想到是...为了探究实质,我们借助chrome浏览器调试工具,下断点,进行调试,结果发现: ?...,以区分baseBmember this.showSelfA = function() { window.alert(this.memberA);    // 显示memberA } }...再次运行chrome等浏览器,结果如下: baseA  member baseB member 结果和我们预期相同,同时chrome调试信息也验证了我们正确性: ?...继承改进(prototype) 以上模拟继承方法,仔细分析不是最好。 因为每次在函数(类)定义了成员方法,都会导致实例有副本,因此可以借助prototype原型,进行改进 改进举例如下: <!

    2.8K10
    领券