JavaScript document.write Chrome

时间:2011-02-15 20:13:43

标签: c# javascript asp.net google-chrome

我有一个简单的垃圾邮件杀手,我试图整理,但文字没有显示在我的表格上。

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.

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

答案似乎是使用附加字符串的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:感谢您对日期属性的建议。那可能是个问题。

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