Pertanyaan jQuery .load () tidak menjalankan JavaScript dalam file HTML yang dimuat


Sepertinya ini masalah yang terkait dengan Safari saja. Saya sudah mencoba 4 di Mac dan 3 di Windows dan saya masih belum beruntung.

Saya mencoba memuat file HTML eksternal dan menerapkan JavaScript yang disematkan.

Kode yang saya coba gunakan adalah ini:

$("#myBtn").click(function() {
    $("#myDiv").load("trackingCode.html");
});

trackingCode.html terlihat seperti ini (sederhana sekarang, tetapi akan memperluas sekali / jika saya mendapatkan ini bekerja):

<html>
<head>
    <title>Tracking HTML File</title>
    <script language="javascript" type="text/javascript">
        alert("outside the jQuery ready");
        $(function() {
            alert("inside the jQuery ready");
        });
    </script>
</head>

<body>
</body>
</html>

Saya melihat kedua pesan peringatan di IE (6 & 7) dan Firefox (2 & 3). Namun, saya tidak dapat melihat pesan di Safari (browser terakhir yang perlu saya perhatikan - persyaratan proyek - harap jangan nyalakan perang).

Setiap pemikiran tentang mengapa Safari mengabaikan JavaScript di trackingCode.html mengajukan?

Akhirnya saya ingin dapat melewatkan objek JavaScript ke ini trackingCode.html file yang akan digunakan dalam panggilan siap jQuery, tapi saya ingin memastikan ini mungkin di semua browser sebelum saya turun ke jalan itu.


76
2018-05-20 20:07


asal


Jawaban:


Anda memuat seluruh halaman HTML ke dalam div Anda, termasuk tag html, head dan body. Apa yang terjadi jika Anda melakukan pemuatan dan hanya memiliki skrip pembuka, skrip penutup, dan kode JavaScript dalam HTML yang Anda muat?

Berikut ini halaman driver:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>jQuery Load of Script</title>
        <script type="text/javascript" src="http://www.google.com/jsapi"></script>
        <script type="text/javascript">
            google.load("jquery", "1.3.2");
        </script>
        <script type="text/javascript">
            $(document).ready(function(){
                $("#myButton").click(function() {
                    $("#myDiv").load("trackingCode.html");
                });
             });
         </script>
    </head>
    <body>
        <button id="myButton">Click Me</button>
        <div id="myDiv"></div>
    </body>
</html>

Berikut ini adalah isi trackingCode.html:

<script type="text/javascript">
    alert("Outside the jQuery ready");
    $(function() {
        alert("Inside the jQuery ready");
    });
 </script>

Ini berfungsi untuk saya di Safari 4.

Pembaruan: Menambahkan DOCTYPE dan namespace html agar cocok dengan kode di lingkungan pengujian saya. Diuji dengan Firefox 3.6.13 dan kode contoh berfungsi.


53
2018-05-20 20:10



$("#images").load(location.href+" #images",function(){
    $.getScript("js/productHelper.js"); 
});

35
2017-11-22 21:47



Versi lain dari Solusi John Pick tepat sebelum, ini berfungsi dengan baik untuk saya:

jQuery.ajax({
   ....
   success: function(data, textStatus, jqXHR) {
       jQuery(selecteur).html(jqXHR.responseText);
       var reponse = jQuery(jqXHR.responseText);
       var reponseScript = reponse.filter("script");
       jQuery.each(reponseScript, function(idx, val) { eval(val.text); } );
   }
   ...
});

21
2017-09-07 07:11



Saya menyadari ini adalah posting yang lebih tua, tetapi bagi siapa saja yang datang ke halaman ini mencari solusi yang serupa ...

http://api.jquery.com/jQuery.getScript/

jQuery.getScript( url, [ success(data, textStatus) ] )
  • url - String yang berisi URL tujuan pengiriman permintaan.

  • success(data, textStatus) - Fungsi callback yang dijalankan jika permintaan berhasil.

$.getScript('ajax/test.js', function() {
  alert('Load was performed.');
});

12
2018-02-23 22:07



Ini tampaknya tidak berfungsi jika Anda memuat bidang HTML ke elemen yang dibuat secara dinamis.

$('body').append('<div id="loader"></div>');
$('#loader').load('htmlwithscript.htm');

Saya melihat DOM Firebug dan tidak ada simpul skrip sama sekali, hanya HTML dan simpul CSS saya.

Ada yang menemukan ini?


8
2017-08-31 00:38



Anda hampir mendapatkannya. Beri tahu jquery Anda ingin memuat hanya skripnya:

$("#myBtn").click(function() {
    $("#myDiv").load("trackingCode.html script");
});

2
2017-08-03 11:38



Uji dengan ini di trackingCode.html:

<script type="text/javascript">

    $(function() {

       show_alert();

       function show_alert() {
           alert("Inside the jQuery ready");
       }

    });
 </script>

2
2017-11-12 15:50



Saya telah mencoba membuat satu plugin jquery untuk fungsi pemuatan html. Silakan lihat tautan berikut.

http://webtech-training.blogspot.in/2010/10/dyamic-html-loader.html

Tolong sarankan saya untuk lebih memperbaikinya.

Terima kasih, Mohan


2
2018-06-14 03:22