Перенос расширения chrome из манифеста v2 в v3

#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, который вы извлекаете динамически, а не то, что большинство людей вообще назвали бы данными.