0

我已经用谷歌搜索并考虑到元素类型“对象”的通用性质,我还没有在大海捞针中找到答案,已经有几个小时了,所以我承认失败并寻求帮助。

我有:

<object id ="siteconfigwindow" name="siteconfigwindow" type="text/html" 
        data="blank.html" width="100%" height="600" 
        onload="hideeditcontrols()">

我有 javascript 可以成功地将对象元素的数据值更改为 html 页面,其中包含我希望隐藏的一些控件的内容。

document.getElementsByName("siteconfigwindow")[0].data = url;

url成功加载包含以下内容:

<div style="text-align:center;">
    <input id="nodeAdd" type="submit" name="addButton">
    <input id="nodeEdit" type="submit" name="editButton">
    <input id="nodeDelete" type="button" name="nodeDelete">
</div>

在查看源页面并发出控制台命令时,我希望隐藏的控件很容易隐藏,例如:

document.getElementById("nodeAdd").parentNode.style.visibility = 'hidden'

但是,当通过带有对象元素的自定义页面上的控制台发出相同的命令时,会出现空对象错误。

如果有人知道显示源页面和隐藏该 div 的更好方法,我完全赞成废弃整个代码。

这两个页面都在我的 Intranet 和同一台服务器上,所以我认为这与安全无关。我提前感谢您的任何帮助。

4

1 回答 1

0

只要您不与同源问题发生冲突,您就可以使用 iframe 执行此操作。

关键是访问 iframe 元素的 contentDocument 属性(适用于 Chrome - 对于跨浏览器,请参阅: iframe.contentDocument Not Working in IE8 and ...

例如 - 这个页面:

<html>
<head>
</head>
<body>

<iframe id='siteconfigwindow' src=''></iframe>

<script>
    document.getElementById("siteconfigwindow").src = 'test.html';
    document.getElementById("siteconfigwindow").addEventListener('load', function() {
        this.contentDocument.getElementById("nodeAdd").parentNode.style.visibility = 'hidden'
    });
</script> 

</body>
</html>

成功加载并隐藏您在上面描述的按钮组:

<html>
<head>
</head>
<body>

    <div style="text-align:center;">
        <input id="nodeAdd" type="submit" name="addButton">
        <input id="nodeEdit" type="submit" name="editButton">
        <input id="nodeDelete" type="button" name="nodeDelete">
    </div>

</body>
</html>
于 2013-07-26T05:13:10.737 回答