【发布时间】:2012-12-04 06:19:06
【问题描述】:
我将在 Chrome 开发者控制台中输出真正的 html 以便于调试。 所以我想到了做一个chrome扩展,就是Chrome Extension。
我将真正的console.log()复制到console.nativeLog();我将自己的自定义函数添加到 console.log();
代码如下:
<div class="myDiv">
<input type="text" id="inp1" title="title1" />
<input type="text" id="inp2" title="title2" />
<input type="text" id="inp3" title="title3" />
<input type="text" id="inp4" />
<input type="text" id="test" value="">
</div>
<input type="button" id="btn1" value="Add" />
<script type="text/javascript">
console.nativeLog = console.log;
var arr= new Array();
for(var i=0;i<100;i++){
arr[i] = i+','+i;
}
var fav = JSON.parse('[{"href":"/EMS-ILS/Modules/Supplier_Profile/Supplier_Profile.aspx?ModID=6&WebPageID=38","text":"Supplier Profile"},{"href":"/EMS-ILS/Modules/Customer_Profile/Customer_Profile.aspx?ModID=6&WebPageID=57","text":"Customer Profile"},{"href":"/EMS-ILS/Modules/Costing_Profile/Costing_Profile.aspx?ModID=6&WebPageID=50","text":"Costing Profile"}]')
console.log = function (val){
if(typeof(val)=='string'){
console.nativeLog(val);
return;
}
try{
for(var x=0;x<arguments.length;x++){
var arr = arguments[x];
try{
if(!arr.length)
console.nativeLog(arr);
else {
for(var i=0;i<arr.length;i++)
console.nativeLog(arr[i]);
}
}catch(err1){
console.nativeLog(arr);
}
}
}
catch(err2){
console.nativeLog(val);
}
}
$(document).ready(function(){
console.log('-------------');
console.log($('input'));
console.log('-------------');
console.log($('#inp1'));
console.log('-------------');
console.log($('#badId'));
console.log('-------------');
console.log($('input'), $('#bad'), $('input:text'), fav, 0, arr)
});
</script>
一切正常,但最后一个。如果 jquery 对象不包含任何结果,它仍然会打印上下文 jquery 对象。
这是控制台的输出。
如何防止这种情况发生?有任何想法吗。谢谢。
【问题讨论】:
-
您希望输出是什么?空行还是根本没有输出?
-
可能是一个空数组[]
-
我下面的实现只产生一个空行。这使得逻辑更简单,但我可以修改它以打印一个空数组。
-
好的,当 jquery 对象为空时,我更新了我的实现以打印 []。你可以把它改成最好的。
标签: javascript jquery google-chrome developer-tools