Javascript không hiển thị khi tạo một tag mới

Mình có đoạn code tự động chọn loại banner quảng cáo nhưng khi dùng thì code của họ không chạy. Trong khi nếu mình để trực tiếp vào script tag thì nó chạy luôn? Liệu có phải do nhà quảng cáo không?

<div id="AdsByadscarh">
</div>

<script>
(function(){
	var s = document.createElement("script");
	s.dataset.cfasync = false;
	s.type = "text/javascript";
	if(window.screen.width>728){
		s.src = "https://www.geniusdexchange.com/a/display.php?r=2479771";
	} else {
		s.src = "https://www.geniusdexchange.com/a/display.php?r=2482347";
	}
	$("#AdsByadscarh").append(s);
	})();
</script>
1 Like

bạn bật F12 lên debug javascript nha :+1:

2 Likes

0 error nha bạn :smiley:

Bật F12 debug, đặt breakpoint, console.log để xem đoạn code đó chạy thế nào, chứ nó không bị lỗi nhưng logic sai thì sao?

3 Likes

Theo tôi thấy thì khi bạn không dùng đoạn script tag riêng của bạn, đoạn mã JS từ https://www.geniusdexchange.com/a/display.php?r=2479771 không chạy được có thể là do CORS bị disable trên Web Server của bạn (Nói một cách ngắn gọn, nếu CORS bị disable, bạn không thể chạy JavaScript từ một domain khác với domain bạn đang truy cập - điều này để ngăn chặn phương thức tấn công XSS). Tuy nhiên, khi bạn dùng đoạn mã trên, bạn đã gắn trực tiếp đoạn JS từ www.geniusdexchange.com vào trang Web khi dùng hàm append. Hàm append cho phép bạn sinh ra mã JS trong thời gian thực thi và có thể bypass được CORS. Vì vậy đoạn mã của bạn lại chạy được.

Tôi biết được điều này vì tôi có thời gian làm việc với một ứng dụng online cho phép gắn một đoạn mã JS từ một URL vào bất kỳ Web page nào và thực hiện đoạn mã đó. Ứng dụng đó cũng dùng hàm append như trong đoạn mã của bạn.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?