我遇到了一些用戶在通過我們的軟件訪問我們的在線商店時出現javascript錯誤彈出窗口的問題。該軟件使用標準WebBrowser控件,出現錯誤的用戶包括IE版本6,7和8以及.net 2和3.5的用戶。當他們直接通過IE訪問商店時,錯誤不會出現。在FF或IE8中或者通過我們的軟件都不會出現這個錯誤。在c#.net WebBrowser組件中獲取javascript錯誤
當用戶查看產品的詳細頁面時,僅當此頁面包含一個JavaScript剪輯播放器時纔會出現此錯誤。
錯誤本身只是說:
線:1 字符:59 錯誤:預期 ')' 代碼:文件的1 0
行是文檔類型,那麼:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
這出現在每一個頁面中,所以當錯誤只出現在帶有剪輯播放器的頁面上時,我不明白它是什麼原因。
與剪輯播放器相關的html如下。它使用nVelocity,所以這就是所有$ siteroot的東西。我仔細檢查過所有正確的括號。
<script type="text/javascript">
//<![CDATA[
var myListener = new Object();
/**
* Initialisation
*/
myListener.onInit = function()
{
this.position = 0;
};
/**
* Update
*/
myListener.onUpdate = function()
{
var isPlaying = (this.isPlaying == "true");
document.getElementById("playerplay").style.display = (isPlaying)?"none":"block";
document.getElementById("playerpause").style.display = (isPlaying)?"block":"none";
};
function getFlashObject()
{
return document.getElementById("myFlash");
}
function play()
{
if (myListener.position == 0) {
getFlashObject().SetVariable("method:setUrl", "/appsite/Files/Clips/$story.Value.ClipPath");
}
getFlashObject().SetVariable("method:play", "");
getFlashObject().SetVariable("enabled", "true");
}
function pause()
{
getFlashObject().SetVariable("method:pause", "");
}
function stop()
{
getFlashObject().SetVariable("method:stop", "");
}
function setPosition()
{
var position = document.getElementById("inputPosition").value;
getFlashObject().SetVariable("method:setPosition", position);
}
function setVolume()
{
var volume = document.getElementById("inputVolume").value;
getFlashObject().SetVariable("method:setVolume", volume);
}
//]]>
</script>
<!--[if IE]>
<script type="text/javascript" event="FSCommand(command,args)" for="myFlash">
eval(args);
</script>
<![endif]-->
<object class="playerpreview" id="myFlash" type="application/x-shockwave-flash" data="$siteroot/content/player_mp3_js.swf" width="1" height="1">
<param name="movie" value="$siteroot/content/player_mp3_js.swf" />
<param name="AllowScriptAccess" value="always" />
<param name="FlashVars" value="listener=myListener&interval=500" />
</object>
<li><div id="playercontroller">
<div id="playerplay"><a href="javascript:play()" ><img src="$siteroot/content/images/clipplay.png" style="vertical-align: middle;"/></a> Play a short clip.</div>
<div id="playerpause" style="display:none;"><a href="javascript:pause()"><img src="$siteroot/content/images/clippause.png" style="vertical-align: middle;"/></a> Pause clip.</div>
</div></li>