我需要console.log(),但它无法正常工作,因为有人在生产网站中阻止了它。有没有其他方法可以打印到控制台?或者使用可以打印完整对象的警报,例如console.log()吗?或者重新定义console.log()以便它再次运行的方法?
我可以使用jQuery库。
答案 0 :(得分:7)
根据他们阻止它的方式,你可以使用这样的东西。
console.log = function fake() {};
console.log("oh no! it's not working!")
delete console.log;
console.log("whew. back again.");
这只会删除已应用的自定义定义。
如果他们做了比这更聪明的事情,你可能会做这样的事情。这会创建一个全新的iframe
,其中包含一个全新的window
对象,您可以从中提取原始console
。这仅在body元素已存在时才有效。
var frame = document.createElement("iframe");
frame.style.display = "none";
document.body.appendChild(frame);
var myConsoleLog = function(message) {
(frame.contentWindow || frame).console.log(message);
}
myConsoleLog("this works too!");
答案 1 :(得分:2)
您可以对对象进行字符串化并将其附加到页面上。 JSON.stringify有两个额外的参数,replacer(忽略)和空格数,也就是说它会为你做一些格式化。
这很简单:
document.body.appendChild(document.createTextNode(JSON.stringify(obj, null, 2)));
稍微复杂的例子: http://codepen.io/JAStanton/pen/qehpH
如果你告诉我你希望摆脱它,我会更有帮助。你只关心对象/属性吗?你想知道对象上的函数等吗??