在c#.net WebBrowser组件中获取javascript错误

在c#.net WebBrowser组件中获取javascript错误,.net,javascript,webbrowser-control,.net,Javascript,Webbrowser Control,我有一个问题,我们的一些用户通过我们的软件访问我们的在线商店时,会出现javascript错误弹出窗口。该软件使用标准的WebBrowser控件,出现错误的用户包括IE版本6、7和8以及.net 2和3.5的用户。当他们直接通过IE访问商店时,不会出现此错误。我不会在FF或IE8中或通过我们的软件出现此错误 当用户查看产品的详细页面时,仅当该页面包含javascript剪辑播放器时,才会发生错误 错误本身只是说: 行:1 人物:59 错误:应为“')” 代码:0 文件的第1行是doctype,因

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

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

错误本身只是说:

行:1 人物:59 错误:应为“')” 代码:0

文件的第1行是doctype,因此:

这会出现在每一个页面上,所以我不知道当错误只出现在带有剪辑播放器的页面上时,这是怎么造成的

下面是与剪辑播放器相关的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>
    
    
    eval(args);
    
    flash代码触发此事件,然后Javascript调用flash发送的
    args
    参数上的
    eval
    。因此,很难从javascript代码中识别这个问题。您可以在eval语句周围包装一个try/catch,然后在某个地方输出
    args
    的值,以便查看错误的代码,从而尝试并调试此操作。我还建议替换
    eval(args)
    eval('('+args+')),因为这已经解决了我过去的问题