2

Javaアプレットを使用しているサイトがあり、ページのヘッド領域にdeployJava.jsロードタグが含まれています。ただし、Chromeデバッガーで結果のHTMLを確認すると、このスクリプトはヘッドコンテンツの開始ボディをすぐに壊してしまうため、他のヘッドコンテンツがボディタグに表示されます。

あなたはそれを私のサイトhttp://viva-games.ru/でライブで見ることができます

また、deployJavaは埋め込みタグを挿入するため(本文が開いた直後)、ページの上部に空の行が表示されます。

私が間違っていることは何ですか?

4

1 に答える 1

7

deployJava.jsdocument.writeドキュメントが完全に読み込まれる前にページにタグを挿入するために使用されるため、統合するのは面倒です。基本的に、非同期ロードには対応していません。

Oracle の例によると、ファイルを本文のどこかに含めて、含めた直後に呼び出す必要があります。そこにアプレットタグが配置されます。

たとえば RequireJS を使用して非同期的にロードする場合、またはページがロードされた後に後で呼び出す場合は、圧縮されていないバージョンをダウンロードし、次の箇所をすべて置き換えます。

document.write(...);

に:

document.getElementsByTagName('body')[0].insertAdjacentHTML('afterbegin', ...);

deployJava.runAppletその後、JavaScript のどこからでも呼び出すことができます。divページのどこかにある要素にアプレット タグを配置することもできます。HTML コード:

<body>
    ...
    <div id="appletContainer"></div>

    // The include after the div or once the page is loaded
    <script type="text/javascript" src="javascript/deployJava.js"></script>
    ...
</body>

およびファイルdeployJava.js

document.getElementById('appletContainer').insertAdjacentHTML('afterbegin', ...);

空行については、説明がありませんが、CSS を使用して回避策を見つけることができます。アプレットに GUI が表示されない場合は、appletContainer の高さを 0 に設定できます。

注:を使用して appletContainer を非表示にしないdisplay:noneでください。そうしないと、アプレットが実行されません。

于 2013-03-17T23:37:04.400 に答える