Tôi đang gỡ lỗi một vấn đề với tập lệnh bên thứ ba của chúng tôi mà người dùng wordpress sử dụng bằng cách sao chép / dán đoạn mã script và html vào nội dung bài đăng của họ như (ví dụ về thế giới không có thực)
<script>
window.foobar = window.foobar || { hello: function(){ console.log('Hello World'); } };
window.foobar.hello();
</script>
Tôi nhận thấy rằng một số cài đặt của wordpress sẽ gói nó trong CDATA, một số sẽ không (có thể bằng cách thực hiện một số loại kiểm tra DOCTYPE - mặc dù tất cả các chủ đề tôi đã thử nghiệm này đều sử dụng tài liệu HTML5).
Tuy nhiên, khi gói tập lệnh trong CDATA, người dùng sẽ bị cắn bởi lỗi sau: https://core.trac.wordpress.org/ticket/3670 (việc đóng >
được thay thế không chính xác >
) dẫn đến trình duyệt bỏ qua nội dung tập lệnh :
<script>// <![CDATA[ window.foobar = window.foobar || { hello: function(){ console.log('Hello World'); } }; window.foobar.hello(); // ]]></script>
Bản thân tôi không sở hữu quá nhiều WP-Fu và việc này chỉ khiến tôi xác định được vấn đề, vì vậy câu hỏi của tôi là: khi nào chính xác thì WordPress gói các đoạn mã nội tuyến vào các phần CDATA? Người dùng có thể bằng cách nào đó ngăn chặn hành vi này? Người dùng có thể bằng cách nào đó khắc phục lỗi trên mà không sửa đổi lõi WP không?