Javascript在JS Fiddle中工作但不在我的Dreamweaver环境中(通过浏览器Safari或Opera或Live View中的预览)

时间:2012-02-23 14:25:53

标签: javascript dreamweaver

我在网上看到了这个脚本并略微修改了它,以自定义的方式打印出当前的日期和时间。它在JS Fiddle http://jsfiddle.net/PVZZ8/中运行良好,但在我的HTML文档中它没有做任何事情。它不能在实时视图中工作,也不能在Safari或Opera中预览页面。我检查了语法,一切似乎都很好。我正在使用Dreamweaver CS5。我使用了我在W3学校找到的一些较短的脚本,它们工作正常,但我对Javascript很新,所以也许在我使用的较长脚本中缺少一些常规步骤? HTML文档如下所示:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js">
</script>
<script type="text/javascript">
function getCalendarDate()
{
   var months = new Array(13);
   months[0]  = "JAN";
   months[1]  = "FEB";
   months[2]  = "MAR";
   months[3]  = "APR";
   months[4]  = "MAY";
   months[5]  = "JUN";
   months[6]  = "JUL";
   months[7]  = "AUG";
   months[8]  = "SEP";
   months[9]  = "OCT";
   months[10] = "NOV";
   months[11] = "DEC";
   var now         = new Date();
   var monthnumber = now.getMonth();
   var monthname   = months[monthnumber];
   var monthday    = now.getDate();
   var year        = now.getYear();
   if(year < 2000) { year = year + 1900; }
   var dateString = monthday +
                    ' ' +
                    monthname +
                    ' ' +
                    year;
   return dateString;
} 

function getClockTime()
{
   var now    = new Date();
   var hour   = now.getHours();
   var minute = now.getMinutes();
   var second = now.getSeconds();
   var ap = "AM";
   if (hour   > 11) { ap = "PM";             }
   if (hour   > 12) { hour = hour - 12;      }
   if (hour   == 0) { hour = 12;             }
   if (hour   < 10) { hour   = "0" + hour;   }
   if (minute < 10) { minute = "0" + minute; }
   if (second < 10) { second = "0" + second; }
   var timeString = hour +
                    ':' +
                    minute +
                    ':' +
                    second +
                    " " +
                    ap;
   return timeString;
}

var calendarDate = getCalendarDate();
var clockTime = getClockTime();
window.onload = document.write('<p>' + 'Your fortunes as of' + ' ' + calendarDate + ' ' + ' ' + 'at' + ' ' + clockTime + '</p>');​​​​​​​​​​
</script>

</head>

<html>
<body>


</body>
</html> 

1 个答案:

答案 0 :(得分:1)

当我复制并粘贴上面的代码并在Dreamweaver中以及在IE9和FIrefox中累掉它时都会出错。我在控制台中检查了IE9和Firefox,并且在最后一行末尾的分号后面都指出了一个非法字符(document.write行)。在检查上面代码的源代码时,我看到在最后一个分号后面有一个10“&amp;#8203”字符串(零宽度空格)。不确定他们是如何到达那里的,但是一旦我从代码中删除它们,页面就开始在IE9,Firefox和Dreamweaver的实时视图中工作。

要做到这一点,我基本上必须选择尾部分号和开头&lt;字符,删除它们并重新键入它们以删除零宽度空格字符。

FWIW:Dreamweaver的Show Hidden Characters没有显示这些字符。虽然考虑过它,但不确定它是如何显示零宽度的东西,但如果有这样的角色的某种指示器会更好。我将在http://adobe.ly/DWwish上记录一个错误,也请记录错误,记录的人越多,实施的机会就越多。