2016-10-01 13 views
0

下記のスクリプトに問題があります。私はtoSourceがChromeに定義されたエラーではなく、toSource()がFirefox固有であることを知っています。私は代わりにJSON.stringify()を試しましたが、そのために私は未定義のエラーがあります。JavaScript JavaScriptのFunction.prototype.toSource()が動作しない

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

内部関数 'toSource'は' seFilterGrid'内に定義されていません – brk

+3

[*どのように良い質問をしますか*](/ help/how-to-ask)あなたの目標は何ですか?最終的な結果は何ですか? 'JSON.stringify'の出力に関して特に問題があったのは何ですか? –

+0

@ user2181397:toSourceはinbuilt firefoxプラグインです!私はそれに相当するクロムを使用したい – user3383301

答えて

1

あなたの質問が明確ではないが、あなたがFunction.prototype.toString()方法を探していることが表示されます。これは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()、一方、only available in Firefoxです。 Mozillaのドキュメントは、それがあることは明らかである:

非標準
この機能は非標準であり、標準化トラックにではありません。ウェブに直面している制作サイトでは使用しないでください。実装間に大きな非互換性があり、今後この動作が変わる可能性があります。

+0

ありがとうございました:) – user3383301

関連する問題