- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找将简单的 JavaScript 对象“转储”到动态生成的 JavaScript 源代码中的最优雅的方法。
目的:假设我们有 node.js 服务器生成 HTML。我们在服务器端有一个对象x。该对象很简单——其中只有字符串/整数/数组(因此,它支持 JSON)。我想将对象 x “嵌入”到正在生成的 HTML 中,以供将在浏览器上运行的 JavaScript 代码使用。所以代码:
console.log(x);
将在服务器端和浏览器端转储完全相同的数据。例如 - 假设我要将一些额外的配置/数据传递给在浏览器上运行的 JavaScript。
明显的解决方案:
编码为 JSON 并简单地附加到变量最初听起来不错,但涉及一些额外的转义步骤。
以这种方式使用 util.inspect() 对我有用:
var toHtml = 'var x = ' + util.inspect(theXonServer, {depth:9}) + ';';
但我不确定它是否“优雅”(并且安全且容易出错......)
有更好的建议吗?这样做的标准方法?
1 Câu trả lời
通常会得到一些建议,将一些 JSON 字符串化并将其转储到
中标签。 这是个糟糕的建议。不要这样做。
了解Tại sao这是个坏主意很重要。
当您对 JavaScript 进行字符串构建时,您将面临各种语言怪癖,您绝对需要了解这些怪癖以确保没有问题。
其中一个怪癖是在
中元素,第一次出现 Sẽđóng cửa
元素。它在字符串中并不重要,脚本将被关闭,该点之后的其余内容将被视为 HTML。
HTML 转义不起作用,因为 JS 不喜欢 HTML 实体。
开头可能是这样的:
window.xss = <%= JSON HERE %>
可以变成:
window.xss = {"username":"Robert Hackerman"}
不要冒险。
防止任何脚本执行的更安全的方法是通过 [data-*]
属性。您phải对内容进行 HTML 转义,但这在属性中是可以的。我正在使用
元素,因为它暗示脚本将使用数据。
什么会开始:
会变成:
如果您想访问该数据,您可以只访问属性值,或使用 dataset api (if your target browsers support it) :
var fooElement = document.querySelector('[data-foo]');
var rawData = fooElement.dataset.foo;
// hoặc
var rawData = fooElement.getAttribute('data-foo');
var data = JSON.parse(rawData);
console.log(data);
如果页面已经加载,而您想访问一些数据,只需使用 AJAX 请求即可。您将能够安全地读取 JSON 数据源,该数据源可以通过 JSON.parse 进行管道传输以访问数据对象。
关于javascript - 如何将 JavaScript 对象导出为 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30216051/
Tôi có một biểu mẫu ở định dạng html: Tôi cần JavaScript thực thi trên trường nhập giá trị, nhưng chỉ thông qua việc gửi biểu mẫu. Lý do là trang là một mẫu nên tôi không kiểm soát được nó (không thể có
Diễn đàn tôi quản lý được lưu trữ bằng phần mềm nên tôi không có quyền truy cập vào mã nguồn và tôi chỉ có thể thêm JavaScript vào trang để đạt được mục đích. Tôi đang cố gắng thay thế trường hợp đầu tiên của một số từ khóa văn bản nhất định trên tất cả các trang bằng siêu liên kết. Tôi cũng sắp xếp chúng theo mã quốc gia
Tôi đang sử dụng JS để mở một trang mới và viết mã HTML vào đó, nhưng khi tôi thử viết JS vào trang mới bằng document.write() thì hàm này không hoạt động. Rõ ràng là một khi đã nhìn thấy thì JS chính sẽ đóng lại. Cho buổi khai trương sắp tới
Đặt câu hỏi không phải để giải quyết vấn đề, đặt câu hỏi là để hiểu rõ hơn về các chuyên gia hệ thống! Tôi biết rằng bất cứ khi nào bạn nhập mã javascript vào công cụ javascript, nó sẽ được công cụ javascript thực thi ngay lập tức. Vì tôi chưa thấy Engi
Tôi có hai tập tin javascript trong một thư mục. Tôi muốn truyền một biến từ tệp javascript này sang tệp javascript khác. Tôi nên sử dụng chương trình nào? Câu trả lời hay nhất window.postMessage dùng để nhắn tin giữa các tài liệu. làm
Tôi có một bài tập trong đó tôi cần lấy hai đầu vào và kiểm tra xem cả hai có bằng một hay không. Nếu đó là console.log thông thường console.log false Tôi đã thử một cái gì đó như thế này: hàm isPositive(fir
Tôi đang làm việc trên một ứng dụng web trong đó tôi dự định cho phép các trang web khác (khách hàng) nhúng mã javascript sau vào trang của họ: Ứng dụng web của tôi nằm tại http://example.org. Tôi không thể cho rằng các trang web của khách hàng có JQue
Hiện tại tôi đang sử dụng ba tệp JS bên ngoài. Tôi muốn kết hợp cả ba tệp JS thành một. Hãy làm bất cứ điều gì cần thiết. Tôi đã tạo aio.js và trong aio.js src="https://code.jquery.com/
Ví dụ, tôi có một mảng như thế này: var myArray = []; var item1 = { start: '08:00', end: '09:30' } var item2 = {
Vì vậy, tôi đang tạo một tiện ích mở rộng cho Chrome sử dụng một số tập lệnh TamperMonkey mà tôi đã tạo. Tôi muốn có một tệp javascript "chính" mà bạn có thể đưa vào và thực thi các tập lệnh khác từ đó. Tôi giỏi sử dụng dòng sau để đưa java khác
Tôi có các tệp A, B html và A, B javascript. Và làm thế nào để di chuyển các biến toàn cục được sử dụng trong JavaScript A trực tiếp sang JavaScript B? Ví dụ JavaScript) va
Tôi cần đưa toàn bộ mã sau vào một tệp JavaScript có tên là activate.js. Bạn có thể cho tôi biết cách thực hiện được không? var int = new int({ giây: 30, đánh dấu
Tôi đã tạo một trang chủ EXAMPLE1.Master cho ứng dụng web .net của mình. Tôi lưu trữ giá trị của chúng trong một biến JavaScript. Tôi muốn lấy biến đó trong một tệp JS khác. Ví dụ 1. Master:-
Có thư viện nào tôi có thể sử dụng để chuyển đổi mã như thế này: function () { var a = 1; } thành mã như thế này: function () { var a = 1; } trong trình duyệt của tôi không? Bởi vì tôi đang ở Gi
Tôi nhận được lỗi cú pháp bị thiếu $(document).ready(function changeText() { var p = document.getElementById('bidp
Tôi đang tạo thanh tiến trình. Nó có nhãn. Tôi muốn điều chỉnh nhãn của một đoạn mã hoàn thành cụ thể. Sau khi tìm ra một số câu trả lời cho các giải pháp khả thi, tôi đã đưa ra đoạn mã sau. Cái đầu tiên khởi động và hoạt động như mong đợi. Tuy nhiên, câu thứ hai thì không. Có vấn đề gì với nó vậy? Mã như sau: HTML:
Đây là một câu hỏi thực sự đơn giản mà đầu óc đơn giản của tôi không thể trả lời được: Tại sao các hàm ẩn danh và onload sau đây không chạy khi tôi tải thư viện bên ngoài? Tôi đang bỏ lỡ một điều rất cơ bản. Library.js chỉ có một dòng: console.log(
Tôi biết JavaScript là ngôn ngữ phía máy khách nhưng tôi muốn thử tìm hiểu xem mã JavaScript được nhúng trong mã thực tế có khác biệt gì so với mã chạy trên bảng điều khiển không. Hãy để tôi giải thích bằng một ví dụ: Tôi muốn tạo một
Làm thế nào tôi có thể thay đổi javascript nội tuyến này thành Unobtrusive JavaScript? Cảm ơn! Tôi rất cảm kích câu trả lời của bạn, nhưng nó không hiệu quả. Mã của tôi là: Tệp PHP js document.getElem
Tôi đang tìm cách thanh lịch nhất để "đổ" một đối tượng JavaScript đơn giản vào mã nguồn JavaScript được tạo động. Mục đích: Giả sử chúng ta có máy chủ node.js tạo HTML. Chúng ta có một đối tượng x ở phía máy chủ.
Tôi là một lập trình viên xuất sắc, rất giỏi!