0

Ich habe ein Problem mit dem Skript unten. Ich bekomme toSource ist kein Fehler in Chrome definiert und festgestellt, dass toSource() ist Firefox spezifisch. Ich habe stattdessen JSON.stringify() ausprobiert, für die ich einen undefinierten Fehler bekam.JavaScript Funktion.prototype.toSource() in Chrome funktioniert nicht

var main_tbls = d.querySelectorAll(".bz_buglist"); 
var first_tbl = main_tbls[0]; 
first_tbl.id = "bugz_table"; 
var ext_script = d.createElement("script"); 
//ext_script.setAttribute("src", "http://www.javascriptkit.com/script/script2/tablefilter.js"); 
ext_script.setAttribute("type", "text/javascript"); 
ext_script.setAttribute("language", "javascript"); 
ext_script.appendChild(d.createTextNode("var TblId, SearchFlt, SlcArgs;TblId = new Array(), SlcArgs = new Array();var colValues = new Array();" + 
    setFilterGrid.toSource() + 
    AddGrid.toSource())); 
d.body.appendChild(ext_script); 


function setFilterGrid(id) 
{ 
    var tbl = grabEBI(id); 
    var ref_row, fObj; 
    if (tbl != null && tbl.nodeName.toLowerCase() == "table") { 
     if (arguments.length > 1) { 
      for (var i = 0; i < arguments.length; i++) { 
       var argtype = typeof arguments[i]; 

       switch (argtype.toLowerCase()) { 
        case "number": 
         ref_row = arguments[i]; 
         break; 
        case "object": 
         fObj = arguments[i]; 
         break; 
       } //switch 

      } //for 
     } //if 

     ref_row == undefined ? ref_row = 2 : ref_row = (ref_row + 2); 
     var ncells = getCellsNb(id, ref_row); 
     tbl.tf_ncells = ncells; 
     if (tbl.tf_ref_row == undefined) tbl.tf_ref_row = ref_row; 
     tbl.tf_Obj = fObj; 
     if (!hasGrid(id)) AddGrid(id); 
    } //if tbl!=null 
} 
+0

gibt es keine innere Funktion 'toSource' definiert innen' seFilterGrid' – brk

+3

Bitte prüfen [* Wie kann ich eine gute Frage? *] (/ Help/how-to-ask) Was ist Ihr Ziel? Welches Endergebnis willst du? Was speziell an der Ausgabe von 'JSON.stringify' war problematisch? –

+0

@ user2181397: toSource ist ein eingebautes Firefox-Plugin! Ich möchte das Chrom-Äquivalent davon verwenden – user3383301

Antwort

1

Während Ihre Frage nicht klar ist, scheint es, dass Sie für die Function.prototype.toString() Methode suchen. Dies funktioniert in basically all browsers.

document.body.innerHTML = '<pre>' + setFilterGrid.toString() +'</pre>'; 
 

 

 
function setFilterGrid(id) 
 
{ 
 
    var tbl = grabEBI(id); 
 
    var ref_row, fObj; 
 
    if (tbl != null && tbl.nodeName.toLowerCase() == "table") { 
 
     if (arguments.length > 1) { 
 
      for (var i = 0; i < arguments.length; i++) { 
 
       var argtype = typeof arguments[i]; 
 

 
       switch (argtype.toLowerCase()) { 
 
        case "number": 
 
         ref_row = arguments[i]; 
 
         break; 
 
        case "object": 
 
         fObj = arguments[i]; 
 
         break; 
 
       } //switch 
 

 
      } //for 
 
     } //if 
 

 
     ref_row == undefined ? ref_row = 2 : ref_row = (ref_row + 2); 
 
     var ncells = getCellsNb(id, ref_row); 
 
     tbl.tf_ncells = ncells; 
 
     if (tbl.tf_ref_row == undefined) tbl.tf_ref_row = ref_row; 
 
     tbl.tf_Obj = fObj; 
 
     if (!hasGrid(id)) AddGrid(id); 
 
    } //if tbl!=null 
 
}

Function.prototype.toSource(), auf der anderen Seite, ist only available in Firefox. Mozilla Dokumentation ist ziemlich klar, dass es ist:

Nicht-Standard-
Diese Funktion ist nicht-Standard und ist nicht auf eine Spur Standards. Verwenden Sie es nicht auf Websites, die mit dem Internet verbunden sind: Es funktioniert nicht für jeden Benutzer. Es kann auch zu großen Inkompatibilitäten zwischen den Implementierungen kommen und das Verhalten kann sich in Zukunft ändern.

+0

Danke Mann gearbeitet :) – user3383301

Verwandte Themen