function hasLiedAboutBrowser()
{
// Assume browser is Firefox but user agent fakes Google Chrome browser
var browser = 'Chrome';
// We create an error to see how it is handled
var errFirefox;
try
{
// eslint-disable-next-line no-throw-literal
throw 'a';
}
catch (err)
{
try
{
console.log('before err.toSource() line'); // This line will work on every browser
err.toSource();
console.log('after err.toSource() line'); // This line will work only on Firefox browser
errFirefox = true; // This line will work only Firefox browser
}
catch (errOfErr)
{
// if err.toSource() throws an exception browser is not a firefox.
errFirefox = false;
}
}
if (errFirefox && browser !== 'Firefox' && browser !== 'Other')
{
console.log("You lied about your browser.");
}
else
{
console.log("All fine");
}
}
hasLiedAboutBrowser();
此代码告诉我们用户何时对浏览器撒谎。
我需要的是“更改firefox javascript错误处理规则”,以便firefox将像其他浏览器一样处理错误
我怎样才能做到这一点?
1-)从源代码编译Firefox? (可能的话,规则在哪里?)
2-)更改omni.ja存档文件上的一些javascript代码? (不见得)
任何想法如何做到这一点?
最佳答案
Firefox在toSource
上定义了String
,因此只需使其未定义即可:
String.prototype.toSource = undefined;
document.getElementsByTagName('button')[0].addEventListener('click', hasLiedAboutBrowser);
document.getElementsByTagName('button')[1].addEventListener('click', function() {
String.prototype.toSource = undefined;
console.log('removed toSource from string prototype');
});
function hasLiedAboutBrowser() {
// Assume browser is Firefox but user agent fakes Google Chrome browser
var browser = 'Chrome';
// We create an error to see how it is handled
var errFirefox;
try {
// eslint-disable-next-line no-throw-literal
throw 'a';
} catch (err) {
try {
console.log('before err.toSource() line'); // This line will work on every browser
err.toSource();
console.log('after err.toSource() line'); // This line will work only on Firefox browser
errFirefox = true; // This line will work only Firefox browser
} catch (errOfErr) {
// if err.toSource() throws an exception browser is not a firefox.
errFirefox = false;
}
}
if (errFirefox && browser !== 'Firefox' && browser !== 'Other') {
console.log("You lied about your browser.");
} else {
console.log("All fine");
}
}
<button>Check Browser</button>
<button>remove toSource</button>
关于javascript - 如何更改Firefox Javascript引擎规则?错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47230824/