3

Head.jsを使用し、スクリプト要素の.src属性を設定する場合、スクリプトの準備ができたときに呼び出されるコールバックメソッドがあります。

ただし、.innerHTMLにテキストを割り当ててスクリプトをロードしたかったのです。これを行うと、代わりにこのプロパティを使用するようにコードを更新/編集したときに、同じコールバックが発生しませんでした。

/*addScriptText1
** modified from head.js
**
**
*/
function addScriptText1(file_name, callback, key) {
    var element = document.createElement('script');
    element.async = true;
    element.innerHTML = localStorage[file_name];
    element.onreadystatechange = element.onload = function () {
        $A.log('callback for element called');
        if ((!element.readyState || /loaded|complete/.test(element.readyState))) {
            localStorage[key + '_loaded'] = true;
            callback();
        }
    };
    document.head.appendChild(element);
}
4

2 に答える 2

1

スクリプトは、インラインスクリプトがDOMに挿入されるとすぐに実行されます。これはすべて同期的に行われるため、コールバックは必要ありません。

asyncネットワークリクエストを行っていないため、ここでは効果がありません。同様に、readyStateはプログラムで作成しているため役に立ちません。そのため、スクリプトはすぐに読み込まれます。

于 2013-01-02T00:29:36.000 に答える
1

スクリプト要素でのinnerHTMLの使用は、クロスブラウザー(Firefox iircを含む)ではサポートされていません。このアプローチはお勧めしません。代わりに、 evalまたはnewFunctionをお勧めします。

スクリプトはinnerHTMLで挿入できますか?

于 2013-01-02T01:54:18.523 に答える