首页 > 解决方案 > IE 8 以上版本的兼容性问题

问题描述

我在 IE11 上遇到兼容性问题。代码在 IE8 之前运行良好,之后就不行了。我们正在使用我们自己的框架。但我不确定它是否与框架或任何其他问题有关。我在控制台中遇到的一个这样的错误是:InvalidCharacterError。代码片段:

function makeScrollableTable(tbl,scrollFooter,height){
  var c, pNode, hdr, ftr, wrapper, rect;

  if (typeof tbl == 'string') tbl = document.getElementById(tbl);

  pNode = tbl.parentNode;
  fixTableWidth(tbl);

  c = container.length;
  container[c] = document.createElement('<SPAN style="height: 100; overflow: auto;">'); //>>> here only its throwing an error.
}

标签: javascript

解决方案


您可以创建一个使用选项 CSS 样式规则构建元素的函数。

function createEl(tagName, options) {
  options = options || {};
  let css = options.css || {},
      el = document.createElement(tagName);
  for (let prop in css) el.style[prop] = css[prop];
  return el;
}

container[c] = createEl('SPAN', { css : { height: 100, overflow: 'auto' } });

进阶版

function createEl(tagName, options) {
  options = options || {};
  let attrs = options.attrs || {},
      css = options.css || {},
      el = document.createElement(tagName);
  for (let prop in css) el.style[prop] = css[prop];
  for (let name in attrs) el.setAttribute(name, attrs[name]);
  if (options.text !== undefined) el.innerHTML = options.text;
  return el;
}

let spanEl = createEl('SPAN', {
  attrs : {
    class : 'foo'
  },
  css : {
    height : '100px',
    overflow : 'auto',
    background : 'DarkGrey',
    color : 'White'
  },
  text : 'Hello World'
});

document.body.appendChild(spanEl);
.foo { padding: 0.5em; }


推荐阅读