2

次のような単純な Javascript があるとします。

<script>
    var hello = function(){
        alert("Hello World!");
    }
</script>

.. ページ helloworld.html で。このスクリプト ブロックを Pjax を使用して別のページに読み込んだとします。関数 hello() を実行するにはどうすればよいですか?

4

2 に答える 2

1

セキュリティ上の理由から、多くのブラウザは によって注入された Javascript を実行しませんinnerHTML。おそらく Pjax が使用していると思います。(これは最小限の例です。)

Pjaxの問題#48で提案されている解決策が役立つかもしれません

私にとってうまくいったのは、jQueryコードを関数に配置し、document.ready(pushState以外のブラウザーの場合)で通常どおり呼び出してから、関数をpjax:endにバインドすることでした。

$('body').bind 'pjax:end', mainFunction
于 2012-06-29T23:02:28.890 に答える
1

これは PJAX で可能です。type の script タグが必要なだけですtext/javascript

PJAX ライブラリからのコード:

function executeScriptTags(scripts) {
  if (!scripts) return

  var existingScripts = $('script[src]')

  scripts.each(function() {
    var src = this.src
    var matchedScripts = existingScripts.filter(function() {
      return this.src === src
    })
    if (matchedScripts.length) {
      matchedScripts.remove();
    }
    console.error("FOUND SCRIPTS", scripts, matchedScripts.length);

    var script = document.createElement('script')
    script.type = $(this).attr('type')
    script.src = $(this).attr('src')
    document.head.appendChild(script)
  })
}
于 2014-01-26T02:45:09.570 に答える