JavaScript document.write Chrome

Posted

技术标签:

【中文标题】JavaScript document.write Chrome【英文标题】: 【发布时间】:2011-06-27 21:29:45 【问题描述】:

我正在尝试组合一个简单的垃圾邮件杀手,但文本没有显示在我的表单上。

javascript是:

<script language="javascript" type="text/javascript">
    document.write("SPAM Killer: What is " + GetDateMonth() + " + " + GetDateDay() + "?")
</script>

在我的 .js 文件中,我定义了这两个函数:

function GetDateMonth() 
  return date1.getMonth() + 1;


function GetDateDay() 
  return date1.getDay() + 1;

文本在 IE8 下显示,但在 Chrome 下不显示。

作为奖励:我的提交表单的 OnClick 方法有这段代码错误地添加了我的月份和日期:

  string spamError = "The SPAM Killer answer was incorrect. ";
  char[] split = spamTest.ToCharArray();
  for (int i = 0; i < split.Length; i++) 
    if (char.IsLetter(split[i])) 
      Ok = false;
      txtMessage.Text = spamError + "Non-numeric data entered.";
      return;
    
  
  int nTestValue = Convert.ToInt32(spamTest, 10);
  if (nTestValue < 1) 
    Ok = false;
    txtMessage.Text = spamError + "Negatave or zero value found.";
  
  DateTime dt = DateTime.Now;
  int month = dt.Month;
  int day = dt.Day;
  int nCorrect = month + day;
  if (nCorrect != nTestValue) 
    Ok = false;
    txtMessage.Text = spamError + string.Format("Expected 0; Received 1.", nCorrect, nTestValue);
    return;
  

使用 IE8,我看到以下内容:

垃圾邮件杀手:什么是 2 + 3?

我输入5,点击发送,得到Expected 17; Received 5.

【问题讨论】:

向我们展示设置date1 的代码。 【参考方案1】:

不要重新发明***,用http://www.google.com/recaptcha帮助看书

C#代码见http://code.google.com/apis/recaptcha/docs/aspnet.html

如果您坚持使用您的代码,请考虑午夜前后的问题以及其他时区的用户。此外,机器人可以很容易地回答你的反机器人问题,如果我编写机器人,我需要 45 秒来编写支持代码。

如果你仍然坚持,你不应该再使用 document.write(不是从 2002 年开始),而是使用 DOM 将文本插入标签 ID,如下所示:Change label text using Javascript

【讨论】:

这是一个托管网站。我没有安装 3rd 方应用程序的选项。我确实试了一下,但遇到了安全异常:应用程序试图执行安全策略不允许的操作。要授予此应用所需的权限,请联系您的系统管理员或在配置文件中更改应用的信任级别。 另外,我致电我们的技术支持,此选项不适用于动态 IP 地址。 天哪!我不担心我的代码背后的逻辑。这只是一个个人网站,可以大声喊叫。问题是 Chrome 中没有显示文本。有人可以解决这个问题吗?【参考方案2】:

答案似乎是使用带有附加字符串的document.write() 函数。

我重新设计了我的 HTML,使其更像这样:

<table>
  <tr>
    <td colspan="2">
      <b>[Human Check]</b><br />
      Enter the text to the left and below exactly as it appears:
    </td>
  </tr>
  <tr>
    <td>
      <script language="javascript" type="text/javascript">
        document.write(GetSpamText())
      </script>
    </td>
  </tr>
</table>

@serverfault:不过,感谢您对 date 属性的建议。那会是个问题。

GetSpamText() 返回的文本可以是静态的,也可以通过编码创建随机值(另一个主题)。

【讨论】:

以上是关于JavaScript document.write Chrome的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript-输出内容(document.write)

如何让使用 document.write() 创建的 JavaScript 执行?

JavaScript document.write Chrome

JavaScript中4种document.write()输出展示

JavaScript 判断一个字符串是否数字

JavaScript eval() 函数