我是一家在政府机构工作的网络开发承包商。我们刚刚开始遇到我们页面的问题,我相信它与Internet Explorer 11.0.26和jQuery DataTable有关。我们使用的是jQuery v1.7和DataTables 1.9,我知道它们已经老了,但它们确实与IE 11.0.25一起使用。
javaScript(JS)失败,“mergeAttributes”方法出现“不支持的错误”。我相信这仍然包含在IE11浏览器API中。
有谁知道会导致此错误的原因以及在什么条件下?
谢谢你的帮助。
答案 0 :(得分:0)
更新:我找到了这个问题的来源并创建了新问题,因为我需要一些帮助才能解决这个问题,这是我的问题及解释:link
我设法重新创建它,所以在我的情况下,在使用一些特殊的css选择器之后,mergeAttributes方法被搞砸了(在我的情况下我一直在使用mootols)。在IE 11(11.0.27)中,IE = 7渲染模式。
我的猜测:在某些情况下,jQuery / Mootools选择器会修改Elements属性列表。
这是代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<script src="https://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools.js"></script>
<style type='text/css'>
.ORG{
width: 400px;
}
</style>
<script type='text/javascript'>
window.addEvent('domready',function(){
$('btn').addEvent('click',function(){
$$('.randomClass') //<--WORKS
$('cln').mergeAttributes($('inp'))
})
$('btnS').addEvent('click',function(){
$$('input[class=randomClass]') // Screw ups mergeAttributes method.
try{$('cln').mergeAttributes($('inp'))}catch(e){
alert(e.description)
}
})
})
</script>
<input type='text' id='inp' value="ORIGINAL" class='ORG'></input><br>
<input type='text' id='cln' value="CLONE" class='none'></input><br>
<input type='button' value='Merrge Classes' id='btn'></input><br>
<input type='button' value='Merrge Classes, but before initiat Class selector' id='btnS'></input> <-- Seceltor used '$$('input[class=randomClass]')'
Demo(无法使用jsfiddle,因为此错误仅在IE = 7 渲染模式下出现): Here is demo
答案 1 :(得分:0)
以下是此问题的FIX。它是由datarant论坛上的carranthuohill3提供的,并引用了Dottoro.com
// mergeAttributes, in contrast, only merges back on the
// original attributes, not the events
try{
if ( dest.mergeAttributes ) {
dest.mergeAttributes( src );
}
} catch (exception) {
for (var i=0; i < src.attributes.length; i++) {
var attr = src.attributes[i];
var attrName = attr.name.toLowerCase ();
if (attrName != "id" && attrName != "name") {
dest.setAttribute (attr.name, attr.value);
}
}
}