我一直在使用Diagram.makeSVG()
方法从我的图表中生成SVG。之后我使用此代码将SVG添加到新的空白选项卡(diagram
是我的图表对象):
function print() {
var newTab = window.open(),
svg = aclDiagram.makeSVG({
some: options
});
newTab.document.body.appendChild(svg);
}
它在Chrome和Firefox中运行良好。 但它在IE11中无效。
我做了一些调试,发现它不仅仅是 Browsers故障。当生成SVG GoJS在调试器中查看它的类型时没有生成正确的SVG(在我看来)
正如我所说,它在FF和Chrome中运行良好。我认为这是由于Chrome和Firefox容忍非官方HTMLElement类型,并且说“嗯,让我们尝试添加它”,与IE 11相比,“Wowowow,没有办法添加这个元素,这甚至不是某种类型HTMLElement“ 或者我在这里弄错了什么?
我现在正在尝试找到一种解决方法,使其在IE中运行。 但是,我不知何故找不到改变对象类型的方法。
有什么建议吗? 提前谢谢。
答案 0 :(得分:2)
好的,经过无休止的研究,我现在可以说:“互联网探索表现得很奇怪。经常”。我们必须处理的问题的起源并不像我对GoJS的预期,而是因为Internet Explorer的某些可疑(个人意见)功能。
游戏名称:层次结构。
使用var newTab = window.open()
打开新标签时,Internet Explorer会打开一个全新的工作区。这意味着newTab
变量现在是新的window
,具有自己的document
和安全限制。
GoJS'makeSvg()
方法在窗口上生成SVG。无法指定它在哪个窗口生成SVG。我想你可以看到我要去哪里。通过说
newTab.document.body.appendChild(svg);
安全限制阻止我将元素添加到不希望的位置。 Big E 只是说“不”,中断例程并抛出异常。通过它自己。但是,嘿,你可能想知道:“这个例外在哪里?”我不完全理解它,但不知何故它直接从IE到IE,IE得到它全部错误并向控制台抛出一个异常说一个异常(“我不能将该元素添加到窗口中它不是为“”而创建的。但是IE并没有给我一个它无法处理的例外。它只打印出有关未被捕获的异常的异常。 的困惑?我是。
那么我们如何解决这个问题呢?
div
),您可以将SVG放入第一个窗口(而不是新选项卡)。div
。div
的{{1}}并将其添加到新标签页。因此,您不是在新标签页中添加HTMLElement,而是添加字符串。
我可能会忽略一些更聪明的解决方案。但是,以下代码是唯一适用于我的代码,因为它能够超出IE的“安全”功能。
innerHTML
答案 1 :(得分:1)
这似乎在IE Edge中运行良好:
var svg = myDiagram.makeSvg({
scale: 0.5
});
svg.style.border = "1px solid black";
document.body.appendChild(svg);
http://codepen.io/simonsarris/pen/qdgeGR?editors=101
就此而言,making SVG intro page上的所有示例似乎都可以在IE边缘上正常工作。
你还有其他事吗?
答案 2 :(得分:0)