【问题标题】:dynamic code evaluation code injection in window.setTimoutwindow.setTimeout 中的动态代码评估代码注入
【发布时间】:2018-06-27 17:48:06
【问题描述】:

我执行了以下代码来处理浏览器中的弹出窗口被阻止的情况。但是我们在 setTimeout 函数中面临一个强化的关键问题。有人可以帮我解决这个问题

var myWindow = window.open("", '_blank');
if (myWindow != undefined) {
  window.setTimeout(function() {
    myWindow.document.write(text);
    myWindow.focus();
    myWindow.document.title = name;
  }, 100);
} else {
  showWarning({
      message: 'popup is blocked')
  });
} // here

【问题讨论】:

    标签: javascript settimeout fortify


    【解决方案1】:

    问题不在于设置的超时。

    当您执行 window.open 时,它被阻止程序阻止,但如果您查看返回数据,myWindow 将是一个空对象。因此,这意味着您将遇到 if else 的 else 部分。

    将代码改为:

    var myWindow = window.open("", '_blank');
    if (Object.keys(myWindow).length !== 0) {
        window.setTimeout(function () {
            myWindow.document.write(text);
            myWindow.focus();
            myWindow.document.title = name;
        }, 100);
    } else {
        showWarning({message: 'popup is blocked')});           
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 2011-07-29
      • 2018-11-05
      • 2018-11-22
      相关资源
      最近更新 更多