كيف يمكنني الحصول على هذا وحدة التقييم () دعوة للعمل في IE؟

StackOverflow https://stackoverflow.com/questions/1050840

  •  20-08-2019
  •  | 
  •  

سؤال

ولدي بعض جافا سكريبت أن يخرج وجلب "الطبقة" جافا سكريبت على صفحة XHTML آخر. جافا سكريبت بعيد تبدو شيء كما يلي:

    (function() {
        this.init = function() {
            jQuery("#__BALLOONS__tabs").tabs();
        };
    })

وبعد هذا الاحتمال في this.javascript، وأنا أحاول أن حدة التقييم وذلك مثيل:

   this.javascript = eval("(" + this.javascript + ")");
   this.javascript = new this.javascript();
   this.javascript.init();

وبطبيعة الحال، وهذا يعمل تماما في جميع المتصفحات باستثناء IE. في IE، فإنه فشل في خط وحدة التقييم. هل لديها اقتراحات حول كيف يمكن جعل هذا العمل في IE أو بديل.

شكرا، بيت

هل كانت مفيدة؟

المحلول

هل حاولت:

eval("this.javascript = (" + this.javascript + ")");

...

نصائح أخرى

وهذا يعمل مع المتصفحات الجيدة والسيئة (مما يعني أي):

var code_evaled;
function eval_global(codetoeval) {
    if (window.execScript)
        window.execScript('code_evaled = ' + '(' + codetoeval + ')',''); // execScript doesn’t return anything
    else
        code_evaled = eval(codetoeval);
    return code_evaled;
}

واستمتع

(وحدة التقييم ليست وسيلة الكائن في IE). اذا مالعمل؟ الجواب تبين أن تتمكن من استخدام IE الملكية طريقة window.execScript إلى رمز وحدة التقييم.

function loadMyFuncModule(var stufftoeval) {
  var dj_global = this; // global scope reference
  if (window.execScript) {

    window.execScript("(" + stufftoeval + ")");

    return null; // execScript doesn’t return anything
  }
  return dj_global.eval ? dj_global.eval(stufftoeval) : eval(stufftoeval);
}

إذا أسوأ يأتي حقا إلى أسوأ، شيئا من هذا القبيل قد تعمل:

var self = this;
funcid = "callback" + Math.random();
window[funcid] = function(javascript) {
  delete window[funcid];
  self.javascript = javascript;
  self.javascript = new self.javascript();
  self.javascript.init();
}
document.write("<script language='javascript'>" +
               "window." + funcid + "(" +
                 "(" + this.javascript + "));" +
               "</script>");

وكان لي نفس المشكلة من وحدة التقييم () مع IE، كما أن وظيفة مع "window.execScript" لم تنجح بالنسبة لي. الحل لقد وجدت للحصول على المصفوفات في جافا سكريبت من صفحة (PHP في حالتي)، وكان لاستخدام بعض JSON.

و// myfeed.php

return json_encode($myarray);

و// myjs.js

$.getJSON('myfeed.php',function(data){dataAlreadyEvaled = data;});

وهذا لا يحتاج إلى وظيفة وحدة التقييم ()، إذا كان ذلك يساعد أي شخص ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top