0

次のようなページに含める小さなウィジェットを作成しました。

<script type="text/javascript">
var _sid = '1';
  (function() {
    var se = document.createElement('script'); se.type = 'text/javascript'; se.async = true;
    se.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://') + 'dev.domain.com/widget/hello.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(se, s);
  })();  
</script>

hello.js現在、次のようになっている内に存在する関数を呼び出す方法を見つけたいと思います。

var widget = function () {

    function setName(a) {
        console.log(a);
    }

    return widget;  
}();

だから私は次のように setName を呼び出すことができるようにしたい:widget.setName("Andy")

...埋め込みページからですが、何らかの理由で「ウィジェットが未定義です」と表示されます。

私が間違っていることはありますか?

4

1 に答える 1

1

ウィジェットを使用する前に、ウィジェットがロードされていることを確認する必要があります。そのための複数のオプションがあります。

  1. requireJs などを使用します。

  2. ロードしている JavaScript にコールバック関数を実装します。たとえば、「document.onHelloIsLoaded」を起動します。次に、hello がロードされているかどうかを知りたい場合は、その変数を関数に設定します。

  3. ループを作成し、ウィジェット変数が設定されているかどうかを確認します。setInterval (ウィジェットが見つかり、コードが実行されたときにキャンセルされます)

また、ウィジェットにアクセスできる場合は setName 変数にアクセスできるようにする必要がありますが、現在はそうではありません。次のようなものを配置する必要があります。

var widget = {};
widget.setName = function()... 
return widget;
于 2013-08-20T07:56:22.513 に答える