Tôi có một trang HTML như sau:jQuery - thẻ script trong HTML được phân tách ra bởi jQuery và không thực hiện
<html>
<body>
<div id='something'>
...
<script>
var x = 'hello world';
</script>
...
</div>
</body>
</html>
Trên trang khác, tôi đang làm điều này:
$.ajax({
url: 'example.html',
type: 'GET',
success: function(data) {
$('#mydiv').html($(data).find('#something').html());
alert(x);
}
});
jQuery, tuy nhiên, không thực thi javascript trong tệp đầu tiên, mặc dù tài liệu cho biết. Làm thế nào tôi có thể làm cho nó làm điều đó?
EDIT: Thật không may trong ứng dụng thế giới thực tôi đang làm việc trên tôi không có quyền kiểm soát những gì trang "được bao gồm" có. Chúng tôi đang ở trên cùng một tên miền, nhưng tôi không thể sửa đổi mã mà nó xuất ra vì nó là một sản phẩm đóng gói, bộ phận CNTT của chúng tôi sẽ không cho phép chúng tôi sửa đổi.
Bạn đã kiểm tra để xem những gì sẽ xảy ra nếu bạn làm một 'alert() 'trong kịch bản gốc (có nghĩa là, bên trong trang "bao gồm")? – Pointy
Vâng, nếu bạn không thể thay đổi nó, bạn có thể kiểm tra lý thuyết của tôi bằng cách thêm một số mã gỡ lỗi để xem những gì '$ (dữ liệu) .html()' trông giống như. Nếu điều đó không chứa các thẻ script, thì đó là vấn đề. Bạn có thể muốn tìm trong nguồn jQuery và xem nó làm gì để loại bỏ các script; nó sử dụng một regex khá xấu xí nhưng có lẽ bạn có thể tự mình cắt các đoạn mã và sau đó thực thi chúng. – Pointy