Raphaeljs 和 Internet Explorer,单击元素时出现问题

2023-12-04

我有下面一段 JavaScript 代码,当我点击它时,它基本上隐藏或显示 Raphaeljs 集。它在 Google Chrome、FireFox 和 Safari 下运行得非常好,但在 Internet Explorer 下根本不行。

var paper = Raphael(document.getElementById('ADiv'), 450, 490);

var group = paper.set();

var toxicRect = paper.rect(0, 0, 120, 60, 10 );
toxicRect.attr({"stroke-width": 1,
            "stroke" : "#3083BE",
            "fill" : "#D1DFE9"});

group.push( toxicRect );

var toxicRectText = paper.text(60, 25, "Toxic in air\nthrough inhalation");
toxicRectText.attr({"font-size": 12 });
group.push( toxicRectText );

var toxicToConcentrationPath = paper.path("M60 60L60 80")
toxicToConcentrationPath.attr({"stroke-width": 1,
                   "stroke" : "#3083BE"});

group.push( toxicToConcentrationPath );

var concentrationRect = paper.rect(0, 80, 120, 60, 10 );
concentrationRect.attr({"stroke-width": 1,
                    "stroke" : "#3083BE",
                "fill" : "#D1DFE9"});

group.push(concentrationRect);

var conRectText = paper.text( 60, 105, "Is concentration\n> TLV/TWA");
conRectText.attr({"font-size": 12});
group.push(conRectText);

var conRectTextYes = paper.text(50, 135, "Yes  / ");

conRectTextYes.attr({"font-size": 12,
                 "font-style": "italic"});

group.push(conRectTextYes);

var conRectTextNo = paper.text(75, 135, "No");
conRectTextNo.attr({"font-size": 12,
                "font-style": "italic"});

group.push(conRectTextNo); 

var monitorConcentrationGroup = paper.set();

var monitorConcentrationRect = paper.rect(140, 95, 60, 30, 10 );
monitorConcentrationRect.attr({"stroke-width": 1,
                        "stroke" : "#3083BE",
                    "fill" : "#D1DFE9"});

monitorConcentrationGroup.push(monitorConcentrationRect);

var monitorConcentrationRectText =  paper.text(170, 115, "Monitor");
monitorConcentrationRectText.attr({"font-size": 12});

monitorConcentrationGroup.push(monitorConcentrationRectText);

var concentrationToMonitorPath = paper.path("M120 110L140 110")
concentrationToMonitorPath.attr({"stroke-width": 1,
                     "stroke" : "#3083BE"});

monitorConcentrationGroup.push(concentrationToMonitorPath);
monitorConcentrationGroup.hide();


//Actions when clicking on decisions
conRectTextYes.node.onclick = function () {

        monitorConcentrationGroup.hide();
};

conRectTextNo.node.onclick = function () {

        monitorConcentrationGroup.show();
};

有人有什么想法吗?您可以在以下位置进行测试:http://raphaeljs.com/playground.html通过剪切和粘贴并省略脚本的第一行。单击“否”应该会出现一个框,至少在 Chrome 中是这样,但在 IE 中不会...

谢谢你!


Raphael 使用 VML 在 IE8 中渲染形状,特别是 VMLtextpath你的例子中的元素。但是,IE8 不会触发该元素的鼠标事件。您可以沿着节点树向上并将事件处理程序附加到shape元素包含textpath但是,即使如此,活动区域也仅由构成文本的像素组成,因此很难单击。

更好的解决方案是在文本后面添加一个透明矩形,并将事件处理程序附加到该矩形:

...

// Make the rectangle slightly larger and offset it 
// from the text coordinates so that it covers the text.
var conRectTextNoContainer = paper.rect(75 - 8, 135 - 9, 17, 14);
// Give the rectangle a fill (any color will do) and 
// set its opacity to and stroke-width to make it invisible
conRectTextNoContainer.attr({
  fill: '#000000',
  'fill-opacity': 0,
  'stroke-width': 0
});
group.push(conRectTextNoContainer); 

var conRectTextNo = paper.text(75, 135, "No");
conRectTextNo.attr({
  "font-size": 12,
  "font-style": "italic"
});
group.push(conRectTextNo); 

...

var conRectTextNoNode = conRectTextNo.node;
if (conRectTextNoNode.tagName === 'textpath') {
  // We're in IE8, attach the handler to the parentNode
  conRectTextNoNode = conRectTextNo.node.parentNode;
}
conRectTextNoContainer.node.onclick = (
  conRectTextNoNode.onclick = function () {
    monitorConcentrationGroup.show();
  }
);

...

工作演示:http://jsfiddle.net/brianpeiris/8CZ8G/show/(可通过以下方式编辑:http://jsfiddle.net/brianpeiris/8CZ8G/)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Raphaeljs 和 Internet Explorer,单击元素时出现问题 的相关文章

  • 不使用 var 关键字声明变量

    w3schools 上写着 如果声明变量时不使用 var 则该变量始终变为 GLOBAL 在函数内部声明全局变量有用吗 我可以想象在某些事件处理程序中声明一些全局变量 但它有什么用呢 更好地利用内存 不 没有内存优势或类似的东西 w3sch
  • 在 jsconfig.json 中找不到“import-resolver-typescript/lib”错误

    Problem Error File Users nish7 Documents Code WebDev HOS frontend node modules eslint import resolver typescript lib not
  • 根据id统计div元素

    我有一个类似的页面 div div div div div div div div div div div div 我想知道 id 与表达式 box content X text 其中 X 是数字 匹配的 div 的数量 我可以使用纯 ja
  • 将颜色名称转换为十六进制代码的 Javascript 函数

    是否有一个内置函数可以将颜色按名称转换为其十六进制表示形式 就像我想传递 白色 并接收 FFFFFF 我真的想避免自己编写一百个 if 代码 不 但使用在这里列出 https www w3schools com colors colors
  • 如何理解javascript React中的这段代码

    我在网上找到了这个函数在js中的实现 这个函数递归地过滤一个对象数组 每个对象可能有属性 children 它是对象数组 并且对象也可能有孩子等等 该函数工作正常 但我有点不明白 这是我的功能 getFilteredArray array
  • 如何在javascript中访问文件? [复制]

    这个问题在这里已经有答案了 是否可以在 JavaScript 中访问扩展名为 txt 或 file 的文件 我想在我的函数中调用这个文件 如果您谈论的是在 Web 浏览器中运行的 javascript 那么答案是否定的 您无法访问客户端计算
  • 空 JavaScript 数组的布尔值冲突

    谁能解释为什么以下两个陈述都评估为true false and 这个问题纯粹是出于对为什么会发生这种情况的好奇 而不是关于如何最好地测试数组是否为空 第一个 false The 运算符对其操作数进行类型转换 在这种情况下 两边都转换为 Nu
  • 错误:使用本地文件时,summernote 不是一个函数

    我遇到了一个非常奇怪的问题 当我使用本地的 Summernote 文件加载文本编辑器时 发生了 summernote 不是函数 的情况 但是 如果我使用 cdn 文件加载编辑器 一切都会顺利 这是我的 HTML 标头代码
  • 如何在 asp:TextBox 的 keyup 事件上调用 javascript 函数

    如何在asp net的TextBox控件的keyup事件上调用javascript函数 我正在尝试类似的事情 但它不起作用
  • 如何从加载程序中排除文件

    我有 webpack 加载器的下一个配置 module loaders test js include rootDir src loader babel presets es2015 test css loader style css au
  • 从 ElementFinder 数组创建 ElementArrayFinder

    这是一个后续问题当条件评估为 true 时获取元素 扩展 ElementArrayFinder https stackoverflow com questions 32572299 take elements while a conditi
  • JavaScript 检查 null 与 undefined 以及 == 和 === 之间的区别

    如何检查变量是否null or undefined和有什么区别null and undefined 有什么区别 and 很难在 Google 上搜索 如何检查变量是否null or undefined 是变量null if a null o
  • 如何在html5画布中向前和向后移动圆圈中的对象?

    我正在 html5 canvas 中开发一个小应用程序 我需要使用键盘按键以圆周运动移动对象 我可以使用键盘按键移动对象 但存在错误 该对象不会从同一位置向后或向前移动 任何人都可以帮助我完成此操作 请检查以下代码 任何形式的帮助将非常感激
  • 在 Google 地图上显示路径时出现问题

    我有多个经度和纬度点 例如 1 long lat starting point 2 long lat 3 long lat 4 long lat 我的代码如下
  • 在 React 中渲染来自 Firebase 的数据

    请帮助我渲染从 Firebase 实时数据库检索的数据 我成功从 Firebase 中以数组形式检索数据 下一步是显示数据 问题就从这里开始了 我想要显示的数据应该存储在 模块 状态 首先 它被设置为一个空数组 然后检索数据 通过 Coum
  • 客户端与服务器端图像压缩[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在研究用户可以上传图片的东西 图像大小不受限制 现在我有两个选择使用PHP 服务器端 压缩图像或使用
  • 没有jquery的动画,左右滑动

    我试图在显示 div 时将其向左滑动 在隐藏它时将其向右滑动 但我不想使用 jQuery 有没有一种方法可以在不使用javascript库的情况下制作简单的动画并支持IE7和IE8 这是我的显示 隐藏js function showHide
  • 在 IOS 设备上制作动画时,2 个相互堆叠的动画元素会发生变化(z 索引位置)吗?

    JSFIDDLE http fiddle jshell net 6gdrQ 18 我有 2 个动画元素 一种是简单的旋转脚本 它像硬币一样旋转徽标的中间部分 另一个动画是中间部分翻转时您看到的徽标后面的粒子画布烟雾动画 我遇到的问题是画布烟
  • 流星与承诺

    我一直在尝试养成使用 Promise 的习惯 但在尝试在 Meteor 上下文中的服务器端代码中使用它们时遇到了问题 这就是问题 if Meteor isServer Meteor startup function code to run
  • 如何在二维数组中找到字符串?

    我有一个看起来像这样的数组 var array a b c d e f 我希望能够在数组中搜索字符串 d 并返回对应的值 c try function find str array for var i in array if array i

随机推荐

  • `plot.密度` 将“xlim”扩展到我的数据范围之外。为什么以及如何解决它?

    使用下面的代码 我试图获取不同分布的密度图 dens lt apply df c 7 9 12 14 16 18 2 density plot NA xlim range sapply dens x ylim range sapply de
  • 为什么属性在编译期间需要显式键入?

    使用属性语法的编译要求在编译时知道接收器的类型 我可能不明白某些东西 但考虑到 Objective C 是一种动态语言 这似乎是一个损坏或不完整的编译器实现 属性 comment 定义为 property nonatomic retain
  • 在 Javascript 中捕获按键(Google 文档)

    我正在尝试编写一个小greasemonkey 脚本 书签 你有什么Google 文档 我想添加的功能需要一个 keypress keyup keydown 事件处理程序 这三个之一 不幸的是 Javascript 不是我的强项 而且我似乎无
  • 并发块如何运行单个 GPU 流式多处理器?

    我正在研究CUDA编程结构 学习后的感受是 创建块和线程后 每个块都会分配给每个流式多处理器 例如 我使用的是 GForce 560Ti 它有 14 个流式多处理器 因此一次可以将 14 个块分配给所有流式多处理器 但当我浏览一些在线材料时
  • 使用.NET读取Delphi TClientDataset文件

    我需要使用 NET 代码读取使用 Delphi 中的 TClientDataset 类编写的文件 提到的解决方案here对我不起作用 一个不在Windows平台上运行的dotNet程序 对我来说意味着您正在部署 Mono 应用程序 可能在
  • Android:如何从活动堆栈中完全删除活动?

    我有两个活动 FirstActivity 和 SecondActivity FirstActivity 有一个意图过滤器 MAIN LAUNCHER 和 DEFAULT SecondActivity 只是一个普通的 Activity And
  • C++ 数字精度和 fstream 截断

    我有一个包含数百个数字的 file txt 它们在点后有很多数字 最多 20 个 我需要在不截断的情况下获取所有数字 否则它们会在以下计算中引入错误 我用 matlab 生成了这些数字 因此它具有极高的精度 但现在我必须在我的程序中复制这种
  • 从行中选择第 i 个最高值并分配给新列的最快方法

    我正在寻找一种解决方案 将新列添加到现有数据框 数据表中 这是每个单独行中的第 i 个最高值 例如 如果我想要第四个最高值 则新列的第一行将包含 1 9 data lt data frame a c a a b b c a peak1 c
  • C# 自顶向下解析实现

    我想用 c 语言实现自上而下的解析 有没有任何资源可以告诉我方法 我的意思是实现或算法的良好方法和描述 例如 以下是一些实施步骤 1 发展语法2 LL1解析3 构造解析器 这些步骤是按顺序排列的 顺序对于给您正确的答案非常重要 以下 MSD
  • 如何放大和缩小画布中的文本大小,tkinter python

    我创建了一个画布小部件并添加了一些对象 例如矩形和文本 我还在鼠标滚轮上绑定了缩放功能 它适用于矩形 但是 它不适用于文本 我想让缩放也适用于文本 但我找不到方法 任何帮助 将不胜感激 class Layout tk Frame def i
  • 计算图像地图上多边形区域的宽度和高度

    是否可以使用坐标计算图像地图上每个多边形区域的宽度和高度 我有一个图像并使用具有多个不同大小的多边形的图像贴图 我需要找到每一个的中心点 要找到中心点 您需要找到多边形的最小和最大X和Y坐标 然后取每个多边形的中点以获得平均中心点 这是一个
  • 如何使用 C++/CLI 包装器将变量参数从托管传递到非托管?

    要在托管域中实现 params 变量参数 功能 我们在 c cli 中执行以下操作 例如 funcManaged int n array
  • 我可以用jqGrid实现延迟加载吗?

    我有一个包含超过 5000 条数据记录的网格 该数据每天都在增长 当我加载带有网格的页面时 网格几乎需要一分钟才能显示我必须一次显示 10 行的数据 那么是否可以用这个jqGrid实现延迟加载呢 这是我生成 JSON 字符串的操作 Requ
  • Javascript 函数压平多个输入数组

    我正在处理几个对象数组 这些对象将使用 React 渲染到 UI 中 这就是我正在做的事情的背景 我从不同的 API 获取不同的数据集 这些数据集是对象数组的数组 例如 age 23 name john age 24 name jane a
  • Python 组合列表——保留相对顺序

    不知道如何解决这个人 have L1 1 2 3 L2 a b c want 1 a 2 b 3 c import itertools L1 1 2 3 L2 a b c list itertools chain from iterable
  • 反应事件discord.js

    我正在尝试用我的机器人编写右舷代码 其他一切都运行良好 但我试图让机器人忽略实际消息作者的反应 这是我当前的代码 client on messageReactionAdd reaction orig message user gt if m
  • Maven/Surefire 未找到单元测试

    我尝试使用 Maven 创建一个测试项目 单元测试工作正常 但是 当尝试对 j2ee 项目执行相同操作时 surefire 无法找到单元测试 测试位于正确的目录 src test java 中并且正在编译它们 junit 测试位于 src
  • 如何将数据从服务发送到活动?

    我是 Android 开发的初学者 我尝试创建一种 MusicPlayer 它使用服务来播放音乐 当我单击 MainActivity 中的按钮时 我会使用 Intent 调用 startService 其中包含操作信号 例如播放 暂停 停止
  • 如何为 git hooks 目录指定新路径?

    我在 Program files 目录中安装了一个 git 并且没有修改它的权限 仅读取 但我想放一些新的钩子 有办法打电话吗git在命令行中并指定 hooks 目录的新路径 Git 挂钩是存储库本地的 创建存储库后 git init yo
  • Raphaeljs 和 Internet Explorer,单击元素时出现问题

    我有下面一段 JavaScript 代码 当我点击它时 它基本上隐藏或显示 Raphaeljs 集 它在 Google Chrome FireFox 和 Safari 下运行得非常好 但在 Internet Explorer 下根本不行 v