IE11投掷'未找到成员'处理SVG时出错
IE11 Throws 'Member not found' Error when handling SVG
我目前正在修复从IE8升级到IE11时出现的一些错误。发生错误的函数试图将变量设置为引用SVG文档。然后将名称分配给SVG中的元素属性。此代码在IE8中正常工作,但在IE11中不再工作。
我在启用企业模式的IE11中工作。
文档模式:5
浏览器配置文件:企业
用户代理字符串:默认
错误:SCRIPT3:找不到成员。
引发错误的行:
var svgDoc = document.embeds(0).getSVGDocument();
函数w/error:
function addMouseHandlers()
{
var svgDoc = document.embeds(0).getSVGDocument();
//var svgDoc = document.embeds(0).contentDocument();
var rgrElements = svgDoc.getElementsByTagName("rgr:ranger");
//document.all.results.innerHTML = rgrElements.length + " rgr:ranger nodes found.";
//var childNodeList = rgrElements.item(0).getChildNodes();
var gParent = null;
var idx = 0;
var sub = "";
var point = "";
for (idx = 0; idx < rgrElements.length; idx++) {
sub = "";
point = "";
gParent = rgrElements.item(idx).parentNode();
if (rgrElements.item(idx).hasAttribute("substation")) {
sub = rgrElements.item(idx).getAttribute("substation");
}
if (rgrElements.item(idx).hasAttribute("point")) {
point = rgrElements.item(idx).getAttribute("point");
}
gParent.setAttribute('onmouseover', 'showPointInfo('"' + sub + ''", '"' + point + ''")');
//gParent.setAttribute('onmouseout', 'showPointInfo('"'", '"'")');
}
}
addMouseHandlers()从:调用
function bodyLoaded()
{
var scriptToRun;
scriptToRun = "closeWaiter3 '"pic'"";
//document.parentWindow.parent.execScript(scriptToRun, "VBScript");
addMouseHandlers();
}
//bodyLoaded() called onload
<BODY BGCOLOR=BLACK onload="bodyLoaded()">
我看了几个相关的帖子,但都没能把解决方案应用到我的问题上。这篇文章:Member not found IE error(IE 6,7,8,9)解释说,这是一个问题,因为如果函数调用在setTimeout内,IE没有将事件传递给另一个函数。但是,此函数的调用堆栈不包括对"setTimeout"的任何引用。我还尝试过使用"contentDocument"属性引用SVG文档,但没有成功。
我相信这可能是如何使用"onload"调用初始函数的问题,但我无法发现调试时需要更改的内容。
问:有人能指导我如何调试这个问题并找到问题的根源吗?
编辑:SVG嵌入标记设置如下:
<embed src="<%=strPic%>" name="SVGEmbed" WIDTH="1024px" HEIGHT="647px"/>
我是否试图错误地引用SVG文档?
发现svg-doc对象没有及时初始化getSVGDocument()
调用。为addMouseHandlers()
函数调用添加setTimeout
缓解了这个问题。
function bodyLoaded()
{
var scriptToRun;
scriptToRun = "closeWaiter3 '"pic'"";
//addMouseHandlers();
//Added the settimeout so, svg gets some time to initialize
setTimeout('addMouseHandlers()', 1000);
}
不确定IE8和IE11之间的差异会导致这个问题。对IE有更深入了解的人能够解释为什么会发生这种情况吗?
相关文章:
- SVG元素——处理和选择文本
- d3与svg在处理元素时的对比
- 使用 JQuery 对 Spin SVG 元素进行动画处理
- 对链接的 svg 进行动画处理不起作用;内联时工作正常
- Snap.svg:在动画中使用相同的种类对多个零件进行动画处理
- OKZoom 插件无法使用 svg 过滤器处理图像
- 如何对单个 SVG 多边形点进行动画处理
- Firefox 不会对 SVG 大小更改进行动画处理
- 对 SVG 多边形进行动画处理
- 如何在 svg 中使用标记对不断变化的路径长度(线)进行动画处理
- 从
- 使用 JavaScript 对 SVG 进行动画处理
- 在纸张.js中对导入的 SVG 的路径段进行动画处理
- 使用 jquery 对 SVG 的填充进行动画处理
- 如果在 DOM 周围移动,SVG 元素将丢失事件处理程序
- IE11投掷'未找到成员'处理SVG时出错
- Tooltipster插件,用于处理SVG对象文件中的元素
- 处理SVG动画的最佳方法是什么?
- 如何处理SVG,以便使用Javascript调整其大小
- 在gulp任务中使用Inkscape处理SVG时遇到问题