0

私はグーグルで検索し、要素タイプ「オブジェクト」の一般的な性質を考えましたが、私の質問に答える干し草の山に針が見つかりませんでした.数時間経ったので、敗北を認めて助けを求めています.

私は持っている:

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

object 要素のデータ値を、非表示にしたいコントロールを含むコンテンツを含む html ページに正常に変更する JavaScript があります。

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'

ただし、オブジェクト要素を使用してカスタム ページのコンソール経由で同じコマンドを発行すると、null オブジェクト エラーが発生します。

ソースページを表示してそのdivを非表示にするより良い方法を誰かが知っているなら、私はコード全体を破棄することに賛成です。

どちらのページも私のイントラネットと同じサーバー上にあるため、これがセキュリティに関連しているとは思いません。よろしくお願いします。

4

1 に答える 1

0

同じオリジンの問題に違反しない限り、iframe でこれを行うことができます。

重要なのは、iframe 要素の contentDocument プロパティにアクセスすることです (Chrome で動作します - クロス ブラウザについては 、iframe.contentDocument が IE8 で機能しないなどを参照してください)。

例 - このページ:

<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 に答える