我遇到了Chrome Dev工具的一个非常奇怪的问题。我的浏览器版本是57.0.2987.133(64位),这是最新版本。
我正在调试一个包含函数validatePositiveIntegerValue
的脚本,但它正在使用此函数在watch <not available>
下查看表达式。但是,如果我使用validateIntegerValue("23.34")
,它会识别该函数并显示一个值。所以我很困惑为什么有些方法被识别,有些方法没有被识别,即使它们是在同一个区块中定义的。
我确实尝试在隐身窗口中渲染页面,并按Ctrl + Shift + R刷新脚本,但它什么也没做。
问题
为什么函数validatePositiveIntegerValue
不能被监视表达式识别,但同一个块中定义的validatePositiveValue
被监视表达式识别?
在Chrome开发者工具中观看表达
[
如何重现此问题
我最接近复制此问题的方法是在Chrome中运行以下html文件。然后,当我点击两个按钮中的任意一个,并在doSomething
内的myValidation
方法中中断时,我无法评估此观察表达式validatePositiveIntegerValue("23.sd")
。
<!DOCTYPE html>
<head>
<title>Chrome Dev Tools Issue</title>
<script>
function doSomething1() {
alert("hi 1");
var isvalid =rpv.validateIntegerValue("dsdsd");
}
function doSomething2() {
alert("hi 2");
var isvalid = rpv.validateIntegerValue("dsdsd");
}
function myValidation() {
var eo = {};
eo.validateIntegerValue = function(integerValue) {
doSomething();
if (!integerValue) {
return false;
}
if (isNaN(integerValue) === true) {
return false;
}
return parseInt(integerValue).toString() === $.trim(integerValue.toString());
}
function validatePositiveIntegerValue(integerValue) {
if (!integerValue) {
return false;
};
if (isNaN(integerValue) === true) {
return false;
}
return parseInt(integerValue).toString() === $.trim(integerValue.toString()) && parseInt(integerValue) >= 0;
}
function doSomething() {
var x = 20;
}
function validateNegativeIntegerValue(integerValue) {
if (!integerValue) {
return false;
};
if (isNaN(integerValue) === true) {
return false;
}
return parseInt(integerValue).toString() === $.trim(integerValue.toString()) && parseInt(integerValue) < 0;
}
function validatePositiveOrZeroIntegerValue(integerValue) {
if (!integerValue) {
return false;
};
if (isNaN(integerValue) === true) {
return false;
}
return parseInt(integerValue).toString() === $.trim(integerValue.toString()) && parseInt(integerValue) > 0;
}
return eo;
}
var rpv = myValidation();
</script>
</head>
<body>
Chrome Dev Tools Issue with Watch Expression not recognising a function
<button id="btn1" onclick="doSomething1();return false;">Call doSomething1 method</button>
<button id="btn1" onclick="doSomething2();return false;">Call doSomething2 method</button>
</body>
</html>
更新
我在以下网址创建了Chrome错误:Chrome Bug Item