我们正在使用CrossRider为Internet Explorer开发扩展程序。我在extension.js中使用调试模式和以下代码:
/************************************************************************************
This is your Page Code. The appAPI.ready() code block will be executed on every page load.
For more information please visit our docs site: http://docs.crossrider.com
*************************************************************************************/
appAPI.ready(function($) {
if (appAPI.isMatchPages("mail.google.com/*")) {
alert('mail.google.com');
} else if (appAPI.isMatchPages("*.mail.yahoo.com/*")) {
alert('mail.yahoo.com');
} else if (appAPI.isMatchPages("*.mail.live.com/*")) {
alert('mail.live.com');
} else if (appAPI.isMatchPages("*.webmail.aol.com/*", "*.mail.aol.com/*", "mail.aol.com/*")) {
alert('mail.aol.com');
} else if (appAPI.isMatchPages("http://mail.rambler.ru/mail/compose.cgi*")) {
alert('mail.rambler.ru');
}
});
我在https://mail.google.com/mail/?pli=1#inbox,https://us-mg6.mail.yahoo.com/neo/launch?.rand=ch8u1egr4gthf和https://mail.aol.com/38815-816/aol-6/en-us/suite.aspx打开新标签页或刷新页面时收到提醒,但是当我在https://bay180.mail.live.com/default.aspx打开标签页时,我收到了仅在我打开新标签时发出警报,而不是在我刷新页面时(我没有检查http://mail.rambler.ru/mail/compose.cgi)。问题是什么?这是CrossRider中的错误还是一个功能?我不明白为什么刷新页面时没有提醒。
答案 0 :(得分:3)
首先,我必须从有关交叉驾驶员发展的建议开始
即使您主要/仅为IE开发,使用chrome作为开发工作流程并定期在IE上进行测试
使用devtools打开+检查后台页面(如果您使用任何后台代码)+在未捕获的异常上启用暂停 铬://扩展/ https://stackoverflow.com/a/10082021/711152 https://developer.chrome.com/devtools/docs/javascript-debugging#pause-on-uncaught-exceptions
在chrome中,您可以从开发工具控制台运行代码作为扩展代码! https://stackoverflow.com/a/8581276/711152 已安装的扩展名应显示在框架列表中。 您可以在chrome:// extensions /
有时(在回调?中)交叉驾驶员在try block和console.log错误中运行你的代码而不是让它们冒泡,所以暂停未捕获的异常不会启动。 如果用setTimeout将代码包装在回调中,它将克服它们的机制。当您无法使用错误消息解决问题时,它很适合调试,除非您知道自己在做什么,否则不要总是这样做。阅读更多相关信息: http://www.informit.com/articles/article.aspx?p=2102373&seqNum=3
不要只使用警报进行调试,使用调试器令牌&的console.log 通过“源”选项卡设置断点将不起作用(您将无法在此处找到它)。你的代码被篡改了。调试器令牌可以解决问题 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/debugger
调试器语句也适用于IE开发工具
<强> TL; TR 强>
要调试您的特定情况,我会使用该代码:(您甚至可以通过Chrome控制台运行它,如上所述)
console.log('extension code run start');
appAPI.ready(function($) {
console.log('extension ready');
console.log('extension id:' + appAPI.appInfo.id);
console.log('extension env:' + appAPI.appInfo.environment);
console.log('extension version:' + appAPI.appInfo.version);
var urlPatterns = [
'mail.google.com/*',
'*.mail.yahoo.com/*',
'*.mail.live.com/*',
'*.webmail.aol.com/*',
'*.mail.aol.com/*',
'mail.aol.com/*',
'http://mail.rambler.ru/mail/compose.cgi*',
'mail.rambler.ru'
], i;
for (i = 0; i < urlPatterns.length; i ++) {
console.log(urlPatterns[i] + '--' + appAPI.isMatchPages(urlPatterns[i]));
}
});
Imo有可能我的Crossrider在页面重新加载后表现不同。不确定这是不是这样。