【问题标题】:How can I bypass a Jscript version check? [closed]如何绕过 Jscript 版本检查? [关闭]
【发布时间】:2012-12-17 17:11:18
【问题描述】:

我的网站在检查浏览器兼容性的代码中存在一个众所周知的错误。这是有问题的代码:

strScriptEngineVer = ScriptEngineMajorVersion() + '.' + ScriptEngineMinorVersion();
if (ScriptEngineMajorVersion() < 5 || ScriptEngineMinorVersion() < 5)
{
    AddTestResultRow('ScriptEngine',
    'Error',
    'Script Engine', // TRANS: msgScriptEngine
    strScriptEngineVer,
    // TRANS: msgScriptEngineWrongVersion
    'Your version of MS Script Engine is not sufficient, Centricity Enterprise Web will not function correctly.');
    // TRANS: msgErrorCannotGoOn
    ShowStopMessage('There is an error, Centricity Enterprise Web cannot go on.');
    return false;
}

此代码导致 Internet Explorer 9 失败,因为 Jscript 引擎版本是 9.0。虽然从逻辑上讲,9.0 大于 5.8(IE 8),但上述代码失败,因为“次要版本”报告为 0,而 0 小于 5。我想做的(如果可能的话)是绕过这个通过报告不同的 Jscript 版本进行检查,或者注入 javascript 代码来替换损坏的代码。我知道可以在 IE 的开发人员模式下执行后者(请参阅:https://braininstitute.mch.com/wiki/Centricity_Enterprise_Web),但我需要一种更自动化的方法。

任何帮助将不胜感激。

【问题讨论】:

  • 定义你自己的ScriptEngineMajorVersion():function ScriptEngineMajorVersion() { return 999; }。然后对开发人员大喊大叫,那是一些非常愚蠢的代码。

标签: javascript jquery internet-explorer jscript


【解决方案1】:

与定义ScriptEngineMinorVersion 的位置相比,这将取决于此代码的确切执行位置。但如果是这样的:

<!-- ScriptEngineMajorVersion and ScriptEngineMinorVersion 
     are defined in tools.js //-->
<script src="tools.js"></script>
<script>
  if (ScriptEngineMajorVersion() < 5 || ScriptEngineMinorVersion() < 5)
  {
    /// ...
  }
</script>

然后您可以覆盖现有的 ScriptEngineMajorVersionScriptEngineMinorVersion 函数。像这样:

<script src="tools.js"></script>
<script>
  function ScriptEngineMajorVersion(){
     return Infinity;
  }
  function ScriptEngineMinorVersion(){
     return Infinity;
  }
</script>
<script>
  if (ScriptEngineMajorVersion() < 5 || ScriptEngineMinorVersion() < 5)
  {
    /// ...
  }
</script>

但显然,这完全取决于您是否可以在定义和使用之间注入代码。

【讨论】:

    猜你喜欢
    • 2016-11-29
    • 2012-09-18
    • 1970-01-01
    • 2011-05-30
    • 2016-09-08
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 2013-03-21
    相关资源
    最近更新 更多