IE中使用firebug

原文地址:
[url]http://remysharp.com/2007/03/13/firebug-in-ie-for-any-web-site/[/url]
在IE新建一个链接,属性如下:(去掉换行回车及空格)
在要调试的页面点链接即可


javascript:
var h=document.getElementsByTagName('html');
h[0].setAttribute('debug', 'true');
if (!document.getElementById('_fb')) {
var q=document.createElement('script');
q.setAttribute('id', '_fb');
q.setAttribute('src', 'http://remysharp.com/wp-content/uploads/2007/03/firebug.js');
document.getElementsByTagName('body')[0].appendChild(q);
void(q);
}else{
void(window.console.open());
}

d:/zh/Files/Ajax/ieFirebug/firebug.js
firebug.js文件内容

if (!("console" in window) || !("firebug" in console)) {
(function()
{
window.console =
{
log: function()
{
logFormatted(arguments, "");
},

debug: function()
{
logFormatted(arguments, "debug");
},

info: function()
{
logFormatted(arguments, "info");
},

warn: function()
{
logFormatted(arguments, "warning");
},

error: function()
{
logFormatted(arguments, "error");
},

assert: function(truth, message)
{
if (!truth)
{
var args = [];
for (var i = 1; i < arguments.length; ++i)
args.push(arguments[i]);

logFormatted(args.length ? args : ["Assertion Failure"], "error");
throw message ? message : "Assertion Failure";
}
},

dir: function(object)
{
var html = [];

var pairs = [];
for (var name in object)
{
try
{
pairs.push([name, object[name]]);
}
catch (exc)
{
}
}

pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; });

html.push('<table>');
for (var i = 0; i < pairs.length; ++i)
{
var name = pairs[i][0], value = pairs[i][1];

html.push('<tr>',
'<td class="propertyNameCell"><span class="propertyName">',
escapeHTML(name), '</span></td>', '<td><span class="propertyValue">');
appendObject(value, html);
html.push('</span></td></tr>');
}
html.push('</table>');

logRow(html, "dir");
},

dirxml: function(node)
{
var html = [];

appendNode(node, html);
logRow(html, "dirxml");
},

group: function()
{
logRow(arguments, "group", pushGroup);
},

groupEnd: function()
{
logRow(arguments, "", popGroup);
},

time: function(name)
{
timeMap[name] = (new Date()).getTime();
},

timeEnd: function(name)
{
if (name in timeMap)
{
var delta = (new Date()).getTime() - timeMap[name];
logFormatted([name+ ":", delta+"ms"]);
delete timeMap[name];
}
},

count: function()
{
this.warn(["count() not supported."]);
},

trace: function()
{
this.warn(["trace() not supported."]);
},

profile: function()
{
this.warn(["profile() not supported."]);
},

profileEnd: function()
{
},

clear: function()
{
consoleBody.innerHTML = "";
},

open: function()
{
toggleConsole(true);
},

close: function()
{
if (frameVisible)
toggleConsole();
},

evaled_lines: [],
evaled_lines_pointer: 0
};

// ********************************************************************************************

var consoleFrame = null;
var consoleBody = null;
var commandLine = null;

var frameVisible = false;
var messageQueue = [];
var groupStack = [];
var timeMap = {};

var clPrefix = ">>> ";

var isFirefox = navigator.userAgent.indexOf("Firefox") != -1;
var isIE = navigator.userAgent.indexOf("MSIE") != -1;
var isOpera = navigator.userAgent.indexOf("Opera") != -1;
var isSafari = navigator.userAgent.indexOf("AppleWebKit") != -1;

// ********************************************************************************************

function toggleConsole(forceOpen)
{
frameVisible = forceOpen || !frameVisible;
if (consoleFrame)
consoleFrame.style.visibility = frameVisible ? "visible" : "hidden";
else
waitForBody();
}

function focusCommandLine()
{
toggleConsole(true);
if (commandLine)
commandLine.focus();
}

function waitForBody()
{
if (document.body)
createFrame();
else
setTimeout(waitForBody, 200);
}

function createFrame()
{
if (consoleFrame)
return;

window.onFirebugReady = function(doc)
{
window.onFirebugReady = null;

var toolbar = doc.getElementById("toolbar");
toolbar.onmousedown = onSplitterMouseDown;

commandLine = doc.getElementById("commandLine");
addEvent(commandLine, "keydown", onCommandLineKeyDown);

addEvent(doc, isIE || isSafari ? "keydown" : "keypress", onKeyDown);

consoleBody = doc.getElementById("log");
layout();
flush();
}

var baseURL = getFirebugURL();

consoleFrame = document.createElement("iframe");
// consoleFrame.setAttribute("src", baseURL+"/firebug.html");
consoleFrame.setAttribute("frameBorder", "0");
consoleFrame.style.visibility = (frameVisible ? "visible" : "hidden");
//consoleFrame.style.zIndex = "2147483647";
consoleFrame.style.zIndex = "999999";
consoleFrame.style.position = "fixed";
consoleFrame.style.width = "100%";
consoleFrame.style.left = "0";
consoleFrame.style.bottom = "0";
consoleFrame.style.height = "200px";
document.body.appendChild(consoleFrame);
consoleFrame.contentWindow.document.write(getFirebugConsoleiFrame());
consoleFrame.contentWindow.document.close();
}

// RS upgrade
function getFirebugConsoleiFrame()
{
var html = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Firebug</title><link rel="stylesheet" type="text/css" href="http://getfirebug.com/firebug/firebug.css"></head><body><div id="toolbar" class="toolbar"><a href="#" onclick="parent.console.clear()">Clear</a><span class="toolbarRight"><a href="#" onclick="parent.console.close()">Close</a></span></div><div id="log"></div><input type="text" id="commandLine"><script>parent.onFirebugReady(document);</script></body></html>';
return html.replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
}

function getFirebugURL()
{
var scripts = document.getElementsByTagName("script");
for (var i = 0; i < scripts.length; ++i)
{
if (scripts[i].src.indexOf("firebug.js") != -1)
{
var lastSlash = scripts[i].src.lastIndexOf("/");
return scripts[i].src.substr(0, lastSlash);
}
}
}

function evalCommandLine()
{
var text = commandLine.value;
commandLine.value = "";

console.evaled_lines[console.evaled_lines.length] = text;
console.evaled_lines_pointer = console.evaled_lines.length;

logRow([clPrefix, text], "command");

var value;
try
{
value = eval(text);
}
catch (exc)
{
}

console.log(value);
}

function layout()
{
var toolbar = consoleBody.ownerDocument.getElementById("toolbar");
var height = consoleFrame.offsetHeight - (toolbar.offsetHeight + commandLine.offsetHeight);
consoleBody.style.top = toolbar.offsetHeight + "px";
consoleBody.style.height = height + "px";

commandLine.style.top = (consoleFrame.offsetHeight - commandLine.offsetHeight) + "px";
}

function logRow(message, className, handler)
{
if (consoleBody)
writeMessage(message, className, handler);
else
{
messageQueue.push([message, className, handler]);
waitForBody();
}
}

function flush()
{
var queue = messageQueue;
messageQueue = [];

for (var i = 0; i < queue.length; ++i)
writeMessage(queue[i][0], queue[i][1], queue[i][2]);
}

function writeMessage(message, className, handler)
{
var isScrolledToBottom =
consoleBody.scrollTop + consoleBody.offsetHeight >= consoleBody.scrollHeight;

if (!handler)
handler = writeRow;

handler(message, className);

if (isScrolledToBottom)
consoleBody.scrollTop = consoleBody.scrollHeight - consoleBody.offsetHeight;
}

function appendRow(row)
{
var container = groupStack.length ? groupStack[groupStack.length-1] : consoleBody;
container.appendChild(row);
}

function writeRow(message, className)
{
var row = consoleBody.ownerDocument.createElement("div");
row.className = "logRow" + (className ? " logRow-"+className : "");
row.innerHTML = message.join("");
appendRow(row);
}

function pushGroup(message, className)
{
logFormatted(message, className);

var groupRow = consoleBody.ownerDocument.createElement("div");
groupRow.className = "logGroup";
var groupRowBox = consoleBody.ownerDocument.createElement("div");
groupRowBox.className = "logGroupBox";
groupRow.appendChild(groupRowBox);
appendRow(groupRowBox);
groupStack.push(groupRowBox);
}

function popGroup()
{
groupStack.pop();
}

// ********************************************************************************************

function logFormatted(objects, className)
{
var html = [];

var format = objects[0];
var objIndex = 0;

if (typeof(format) != "string")
{
format = "";
objIndex = -1;
}

var parts = parseFormat(format);
for (var i = 0; i < parts.length; ++i)
{
var part = parts[i];
if (part && typeof(part) == "object")
{
var object = objects[++objIndex];
part.appender(object, html);
}
else
appendText(part, html);
}

for (var i = objIndex+1; i < objects.length; ++i)
{
appendText(" ", html);

var object = objects[i];
if (typeof(object) == "string")
appendText(object, html);
else
appendObject(object, html);
}

logRow(html, className);
}

function parseFormat(format)
{
var parts = [];

var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat};

for (var m = reg.exec(format); m; m = reg.exec(format))
{
var type = m[8] ? m[8] : m[5];
var appender = type in appenderMap ? appenderMap[type] : appendObject;
var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);

parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
parts.push({appender: appender, precision: precision});

format = format.substr(m.index+m[0].length);
}

parts.push(format);

return parts;
}

function escapeHTML(value)
{
function replaceChars(ch)
{
switch (ch)
{
case "<":
return "<";
case ">":
return ">";
case "&":
return "&";
case "'":
return "'";
case '"':
return """;
}
return "?";
};
return String(value).replace(/[<>&"']/g, replaceChars);
}

function objectToString(object)
{
try
{
return object+"";
}
catch (exc)
{
return null;
}
}

// ********************************************************************************************

function appendText(object, html)
{
html.push(escapeHTML(objectToString(object)));
}

function appendNull(object, html)
{
html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
}

function appendString(object, html)
{
html.push('<span class="objectBox-string">"', escapeHTML(objectToString(object)),
'"</span>');
}

function appendInteger(object, html)
{
html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
}

function appendFloat(object, html)
{
html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
}

function appendFunction(object, html)
{
var reName = /function ?(.*?)\(/;
var m = reName.exec(objectToString(object));
var name = m ? m[1] : "function";
html.push('<span class="objectBox-function">', escapeHTML(name), '()</span>');
}

function appendObject(object, html)
{
try
{
if (object == undefined)
appendNull("undefined", html);
else if (object == null)
appendNull("null", html);
else if (typeof object == "string")
appendString(object, html);
else if (typeof object == "number")
appendInteger(object, html);
else if (typeof object == "function")
appendFunction(object, html);
else if (object.nodeType == 1)
appendSelector(object, html);
else if (typeof object == "object")
appendObjectFormatted(object, html);
else
appendText(object, html);
}
catch (exc)
{
}
}

function appendObjectFormatted(object, html)
{
var text = objectToString(object);
var reObject = /\[object (.*?)\]/;

var m = reObject.exec(text);
html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>')
}

function appendSelector(object, html)
{
html.push('<span class="objectBox-selector">');

html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
if (object.id)
html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
if (object.className)
html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');

html.push('</span>');
}

function appendNode(node, html)
{
if (node.nodeType == 1)
{
html.push(
'<div class="objectBox-element">',
'<<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');

for (var i = 0; i < node.attributes.length; ++i)
{
var attr = node.attributes[i];
if (!attr.specified)
continue;

html.push(' <span class="nodeName">', attr.nodeName.toLowerCase(),
'</span>="<span class="nodeValue">', escapeHTML(attr.nodeValue),
'</span>"')
}

if (node.firstChild)
{
html.push('></div><div class="nodeChildren">');

for (var child = node.firstChild; child; child = child.nextSibling)
appendNode(child, html);

html.push('</div><div class="objectBox-element"></<span class="nodeTag">',
node.nodeName.toLowerCase(), '></span></div>');
}
else
html.push('/></div>');
}
else if (node.nodeType == 3)
{
html.push('<div class="nodeText">', escapeHTML(node.nodeValue),
'</div>');
}
}

// ********************************************************************************************

function addEvent(object, name, handler)
{
if (document.all)
object.attachEvent("on"+name, handler);
else
object.addEventListener(name, handler, false);
}

function removeEvent(object, name, handler)
{
if (document.all)
object.detachEvent("on"+name, handler);
else
object.removeEventListener(name, handler, false);
}

function cancelEvent(event)
{
if (document.all)
event.cancelBubble = true;
else
event.stopPropagation();
}

function onError(msg, href, lineNo)
{
var html = [];

var lastSlash = href.lastIndexOf("/");
var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);

html.push(
'<span class="errorMessage">', msg, '</span>',
'<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
);

logRow(html, "error");
};

function onKeyDown(event)
{
if (event.keyCode == 123)
toggleConsole();
else if ((event.keyCode == 108 || event.keyCode == 76) && event.shiftKey
&& (event.metaKey || event.ctrlKey))
focusCommandLine();
else if (event.keyCode == 38) {
if (console.evaled_lines_pointer > 0) {
console.evaled_lines_pointer--;
commandLine.value = console.evaled_lines[console.evaled_lines_pointer];
}
} else if (event.keyCode == 40) {
if (console.evaled_lines_pointer < console.evaled_lines.length - 1) {
console.evaled_lines_pointer++;
commandLine.value = console.evaled_lines[console.evaled_lines_pointer];
}
} else
return;

cancelEvent(event);
}

function onSplitterMouseDown(event)
{
if (isSafari || isOpera)
return;

addEvent(document, "mousemove", onSplitterMouseMove);
addEvent(document, "mouseup", onSplitterMouseUp);

for (var i = 0; i < frames.length; ++i)
{
addEvent(frames[i].document, "mousemove", onSplitterMouseMove);
addEvent(frames[i].document, "mouseup", onSplitterMouseUp);
}
}

function onSplitterMouseMove(event)
{
var win = document.all
? event.srcElement.ownerDocument.parentWindow
: event.target.ownerDocument.defaultView;

var clientY = event.clientY;
if (win != win.parent)
clientY += win.frameElement ? win.frameElement.offsetTop : 0;

var height = consoleFrame.offsetTop + consoleFrame.clientHeight;
var y = height - clientY;

consoleFrame.style.height = y + "px";
layout();
}

function onSplitterMouseUp(event)
{
removeEvent(document, "mousemove", onSplitterMouseMove);
removeEvent(document, "mouseup", onSplitterMouseUp);

for (var i = 0; i < frames.length; ++i)
{
removeEvent(frames[i].document, "mousemove", onSplitterMouseMove);
removeEvent(frames[i].document, "mouseup", onSplitterMouseUp);
}
}

function onCommandLineKeyDown(event)
{
if (event.keyCode == 13)
evalCommandLine();
else if (event.keyCode == 27)
commandLine.value = "";
}

window.onerror = onError;
addEvent(document, isIE || isSafari ? "keydown" : "keypress", onKeyDown);

if (document.documentElement.getAttribute("debug") == "true")
toggleConsole(true);
})();
}



原文地址:
[url]http://remysharp.com/2007/03/13/firebug-in-ie-for-any-web-site/[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IE浏览器开发者工具,也称为F12开发者工具,是用于在Internet Explorer浏览器进行网页开发和调试的一组功能。它类似于其他浏览器(如FirefoxFirebug)提供的开发者测试工具。IE开发者工具包括以下功能: - 脚本探查器:可以分析在IE运行的JavaScript代码的性能。 - DOM资源查看器:可以查看页面的DOM结构,包括HTML、CSS和JavaScript代码。 - 网络分析器:可以跟踪和分析网页或网络的性能问题,包括请求和响应的时间、大小和状态等。 - 元素查看器:可以选页面上的元素,并查看其样式和布局信息。 - 控制台:可以在控制台执行JavaScript代码,查看调试信息和错误消息。 - 兼容性查看器:可以查看网页在不同版本的IE浏览器的呈现效果,包括IE 7、8、9和10以及IE10兼容视图。 要打开IE开发者工具,可以使用快捷键F12,或者在IE浏览器的菜单选择“开发者工具”。一旦开发者工具打开,您就可以使用上述功能来进行网页开发和调试。请注意,F12开发者工具提供了一些强大的功能,可以帮助您更轻松地开发和调试网页。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [IE开发利器-IE10的F12开发者工具](https://blog.csdn.net/wlzcool/article/details/8535491)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值