gpt4 book ai didi

javascript - 在 Console.Log() 中显示 HTML 而不是 jQuery 选择对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:35:16 28 4
gpt4 key购买 nike

我要在 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 对象。

这是控制台的输出。

enter image description here

如何预防?有任何想法吗。谢谢。

最佳答案

看看这个 fiddle http://jsfiddle.net/tppiotrowski/KYvDX/3/ .如果 jQuery 对象为空,这将在单独的行上打印每个参数并打印 []:

console.nativeLog = console.log;
console.log = function(val) {
var x = 0;
for (x; x < arguments.length; x++) {
var item = arguments[x];
// check if we are dealing with jQuery object
if (item instanceof jQuery) {
// jQuery objects with length property are
// the only ones we want to print
if (item.length) {
for (var i = 0; i < item.length; i++) {
console.nativeLog(item[i]);
}
} else {
console.nativeLog('[]');
}
} else {
console.nativeLog(item);
}
}
}

这是对打印多个参数的实际 console.log 行为的更准确复制,例如。 console.log('a', 'b', 2, []) 在一行中:http://jsfiddle.net/tppiotrowski/KYvDX/4/

console.nativeLog = console.log;
console.log = function() {
var x = 0;
var output = [];
for (x; x < arguments.length; x++) {
item = arguments[x];
if (item instanceof jQuery) {
if (item.length) {
for (var i = 0; i < item.length; i++) {
output.push(item[i]);
}
} else {
output.push('[]');
}
} else {
output.push(item);
}
}
console.nativeLog.apply(this, output);
}

关于javascript - 在 Console.Log() 中显示 HTML 而不是 jQuery 选择对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13697170/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com