gpt4 book ai didi

.net - 在 c# .net WebBrowser 组件中出现 javascript 错误

转载 作者:行者123 更新时间:2023-11-28 10:34:09 25 4
gpt4 key购买 nike

我遇到了一些问题,我们的一些用户在通过我们的软件访问我们的在线商店时收到 JavaScript 错误弹出窗口。该软件使用标准的WebBrowser控件,出现错误的用户包括使用IE版本6,7和8以及.net 2和3.5的用户。当他们直接通过IE访问商店时不会出现该错误。我在 FF 或 IE8 中或通过我们的软件都不会出现该错误。

当用户查看产品的详细页面并且仅当该页面包含 JavaScript 剪辑播放器时才会发生错误。

错误本身只是说:

行:1 Angular 色:59错误:应为“)”代码:0

文件的第 1 行是文档类型,因此:
<!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&amp;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>

最佳答案

这看起来与您的 Flash 代码有关,而不是与 Javascript 代码有关。您说“一些[您的]用户”遇到了这个问题,因此这是一个间歇性问题,很可能是由网站上的单个特定操作引起的。以下代码可能是问题所在:

<script type="text/javascript" event="FSCommand(command,args)" for="myFlash"> 
eval(args);
</script>

您的 Flash 代码会触发此事件,然后 Javascript 对 Flash 发送的 args 参数调用 eval。因此很难从您的 JavaScript 代码中识别出这个问题。您可以尝试通过在 eval 语句周围包装 try/catch 来调试此问题,然后在某处输出 args 的值,以便您查看错误的代码。我还建议将 eval(args); 替换为 eval('('+args+')');,因为这已经解决了我的问题 when parsing JSON过去。

关于.net - 在 c# .net WebBrowser 组件中出现 javascript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2155031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com