`
shuaigg.babysky
  • 浏览: 554079 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Chrome脚本访问window对象

 
阅读更多

var isChrome = window.chrome;

 

function safeInvoke(callback) {

/// <summary>沙箱模式下的回调</summary>

 

//因为Chrome不支持require引入脚本包的功能,为避免需要将整个jQuery加载进来,这里使用非安全模式进行执行

if (isChrome) unsafeInvoke(callback);

else callback();

}

 

 

function unsafeInvoke(callback) {

/// <summary>非沙箱模式下的回调</summary>

var cb = document.createElement("script");

cb.type = "text/javascript";

cb.textContent = buildCallback(callback);

document.head.appendChild(cb);

}

 

function buildCallback(callback) {

var content = "";

content += "window.__cb=" + buildObjectJavascriptCode(callback) + ";\r\n\

window.__cb();\r\n\

";

return content;

}

 

function buildObjectJavascriptCode(object) {

/// <summary>将指定的Javascript对象编译为脚本</summary>

if (!object) return null;

 

var t = typeof (object);

if (t == "string") {

return "\"" + object.replace(/(\r|\n|\\)/gi, function (a, b) {

switch (b) {

case "\r":

return "\\r";

case "\n":

return "\\n";

case "\\":

return "\\\\";

}

}) + "\"";

}

if (t != "object") return object + "";

 

var code = [];

for (var i in object) {

var obj = object[i];

var objType = typeof (obj);

 

if ((objType == "object" || objType == "string") && obj) {

code.push(i + ":" + buildObjectJavascriptCode(obj));

} else {

code.push(i + ":" + obj);

}

}

 

return "{" + code.join(",") + "}";

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics