【问题标题】:Javascript - checking if frame is emptyJavascript - 检查框架是否为空
【发布时间】:2015-11-12 22:13:26
【问题描述】:

我尝试检查框架“content1”和“content3”是否为空,然后调整它们的大小。

但是每个循环的大小都会改变

window.setInterval(function () {
check();
}, 50);

function check() {

    var content1 = document.getElementsByName("content")[0].contentDocument.body;
    var content3 = document.getElementsByName("content3")[0].contentDocument.body;

    if (isEmpty(content3)) {
        if (isEmpty(content1)) setProperties("0px, *, 0px");
        else setProperties("35%, *, 0px");
    } else setProperties("25%, 40%, 35%");

    window.localStorage.clear();
}

function isEmpty(e) {
    return (e.offsetWidth != 0);
}

function setProperties(value) {
    document.getElementsByTagName("frameset")[1].cols = value;
}

https://jsfiddle.net/ecytve7w/8/

【问题讨论】:

标签: javascript html typeerror


【解决方案1】:

嗯,这个错误就是它所说的:enull,所以e.offsetWidth 会抛出异常。只需检查e 也:

return !!(e && (e.offsetWidth != 0 || e.innerHTML != "\n"));

!! 使得函数始终返回布尔值 truefalse 结果,这不是必需的,但我喜欢使用 isFoo() 函数来做到这一点,只是为了更好。

为什么e 会为空?在这种情况下,这是因为代码在页面上找不到“content”或“content3”元素。

【讨论】:

  • @error404username_not_found 你能用指向实际小提琴的链接更新你的问题吗?这里的代码和链接小提琴中的代码是不同的。如果你把它放在isEmpty() 中,并将e 声明为参数,你就不会得到这个错误。
猜你喜欢
  • 2014-04-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-04
  • 1970-01-01
  • 2012-06-17
相关资源
最近更新 更多