#javascript #google-chrome-extension #eval #manifest
Вопрос:
Мне нужно перенести некоторые расширения chrome в manifest v3. Ранее мы использовали функцию eval (), которая теперь выдает ошибку для V3. Пожалуйста, помогите мне понять, что следует использовать вместо eval(). Пример кода приведен ниже.
var FirstFunction = function (data) {
// some data coming from DB
eval(data);
// issue occurs at this point "Uncaught (in promise) EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'self'"."
}
в данных у нас есть приведенный ниже фрагмент кода:
var demoEmrCustomInterval = setInterval(function () {
try {
counter ;
try {
var pName = $("#attendantData .patientInfo .ptName span:first")
.text()
.trim();
var pDOB = document.getElementsByName("pat")[0].contentWindow.document.getElementById("text_DOB")
.innerText.trim();
}
catch (e) { }
if (((pName == "" || pName == null || pName == "null" || pName == undefined) || (pName == "" || pName == null || pName == "null" || pName == undefined)) amp;amp; userSettingsShowPatinetWidgentOnChart_Cookie) userSettingsShowPatinetWidgentOnChart = true;
else userSettingsShowPatinetWidgentOnChart = false;
setsessionStorage(pName, pDOB, "M");
}
catch (e) {
if (userSettingsShowPatinetWidgentOnChart_Cookie) userSettingsShowPatinetWidgentOnChart = true;
else userSettingsShowPatinetWidgentOnChart = false;
}
}, 50);;
window.IsAutomatchTimerCurrentlyRunning = 1;
window.setInterval = function (window, setInterval) {
if (!window.timers) {
window.timers = {};
}
if (!window.timers.intervals) {
window.timers.intervals = {};
}
if (!window.timers.intervals.active) {
window.timers.intervals.active = {};
}
return function (func, interval) {
var id = setInterval(func, interval);
window.timers.intervals.active[id] = func;
return id;
}
}(window, window.setInterval);
Комментарии:
1. Кода, который вы показали, на самом деле недостаточно, чтобы понять проблему: в чем data
дело ? Может быть, вы могли бы привести небольшой пример того, как это может выглядеть?
2. @IMSoP я редактирую и предоставляю то, что есть в данных
3. О, ничего себе, значит, ваши "данные" на самом деле-это просто целая куча кода JavaScript, который вы извлекаете динамически, а не то, что большинство людей вообще назвали бы данными.