10
Tôi đang gặp sự cố khi tôi chỉ có thể kích hoạt mã của mình nếu tôi lặp lại. Xem ví dụ bên dưới. Trong khi mã gần như giống hệt nhau nếu tôi lấy một trong hai tập lệnh này, mã không hoạt động chỉ với một tập lệnh, nhưng nếu tôi chạy cả hai tập lệnh đều hoạt động tốt, nhưng chỉ một mã thay vì hai. thôi buông đi.Tại sao javascript của tôi chỉ kích hoạt khi mã được lặp lại?
này hoạt động (nhưng đám cháy chỉ có một kịch bản):
<script type="text/javascript">
var url = window.location.href + "";
document.write('<script type="application/javascript" src="https://testdomain.com/mik21?add=2140535&mik21=' + url + '"/>');
</script>
<script type="text/javascript">
var url = window.location.href + "";
document.write('<script type="application/javascript" src="https://testdomain.com/mik?add=2140535&mik=' + url + '"/>');
</script>
này không hoạt động:
<script type="text/javascript">
var url = window.location.href + "";
document.write('<script type="application/javascript" src="https://testdomain.com/mik21?add=2140535&mik21=' + url + '"/>');
</script>
Hoặc này:
<script type="text/javascript">
var url = window.location.href + "";
document.write('<script type="application/javascript" src="https://testdomain.com/mik?add=2140535&mik=' + url + '"/>');
</script>
Có ai có bất kỳ ý tưởng? đây chắc chắn là điều kỳ lạ nhất mà tôi từng thấy trong một thời gian.
Cảm ơn,
không sử dụng document.write là gợi ý đầu tiên của tôi, ai biết tại sao vẫn còn hợp lệ trong trình duyệt kể từ khoảng 2005 –
https://stackoverflow.com/questions/802854/ Tại sao-là-tài liệu-viết-coi-a-xấu-thực hành – birdspider
những gì là trước khi dụ đầu tiên của '
này hoạt động:
Để ngăn chặn js từ đâm, tôi đã chia thẻ
<script>
thành hai chuỗi.Nguồn
2015-07-03 09:39:21
Vấn đề là thẻ tập lệnh của bạn bị hỏng.Thẻ
<script>
phải được đóng bởi</script>
.Bây giờ đây là những gì sẽ xảy ra:
Ví dụ 1
Tạo HTML đánh dấu sau:
Nhìn chung, trình duyệt không thực hiện một khối
<script>
cho đến khi họ tìm ra tương ứng</script>
. Không có thẻ đóng rõ ràng trong ví dụ trên để trình duyệt bỏ qua thẻ.Ví dụ 2
Tạo đầu ra sau đây:
Chú ý rằng các thẻ script tự động bằng văn bản không được đóng lại. Trình duyệt sẽ khớp với thẻ này với số thứ hai
</script>
trong đánh dấu; mọi thứ ở giữa (không đúng) sẽ trở thành một phần của thẻ này.Giải pháp
Khi sử dụng document.write, hãy chắc chắn rằng bạn đóng
<script>
thẻ đúng cách. Nhưng lưu ý rằng bạn không thể sử dụng</script>
như bên trong mã JavaScript vì nó báo hiệu kết thúc khối tập lệnh. Bạn có thể sử dụng thủ thuật sau đây:Nguồn
2015-07-03 10:32:11
Lưu ý: Nếu ai đó tự hỏi tại sao trình duyệt không tăng lỗi cú pháp, câu trả lời là: trình duyệt sẽ bỏ qua nội dung của thẻ script khi thuộc tính 'src' hiện diện. –