【问题标题】:Uncaught SyntaxError: Invalid flags supplied to RegExp constructor 'Capture'未捕获的 SyntaxError:提供给 RegExp 构造函数“Capture”的标志无效
【发布时间】:2013-07-01 16:01:41
【问题描述】:
$("#test_point_geck_info")
  .html("<div id='img_1' class='img_1'>" +
     "<img src = " + ROOT_PATH + 
     "/assets/Capture.PNG onclick=PopImage(" + ROOT_PATH + 
     "/assets/Capture.PNG,'xyz')" +
     " style='cursor:pointer;' class=thumbnail width='100' height='100'></div>");

浏览器上的结果如下:

<img src="/assets/Capture.PNG" onclick="PopImage(/assets/Capture.PNG,'xyz')" style="cursor:pointer;" class="thumbnail" width="100" height="100">

正在调用的函数:

function PopImage(imagesrc,caption) {
var PopupImageContainer = new Image();
PopupImageContainer.src = PopupImageSRC;
setTimeout("PopupImageDisplay()",loadDelay);

}

【问题讨论】:

    标签: javascript jquery jquery-ui javascript-events


    【解决方案1】:

    /assets/Capture.PNG 被解释为带有Capture.PNG 标志的regex literal(对于assets) - 这是无效的。你想要一个字符串:'/assets/Capture.PNG'

    无论如何,您不应该使用内联事件处理程序属性——尤其是当您已经有 jQuery 可用时。更好:

    $("#test_point_geck_info").html('<div id="img_1" class="img_1">' +
    '<img src = " + ROOT_PATH + "/assets/Capture.PNG" title="xyz" ' +
    'class="thumbnail" width="100" height="100"></div>').find("img").click(PopImage);
    
    function PopImage(e) {
        var imagesrc = this.src,
            caption = this.title;
        var PopupImageContainer = new Image();
        PopupImageContainer.src = PopupImageSRC;
        PopupImageContainer.onload = function() {
            PopupImageDisplay(PopupImageContainer, PopupImageCaption, PopupImageSRC);
        };
    }
    
    .thumbnail {
        cursor: pointer;
    }
    

    【讨论】:

    • 谢谢.....它在将其更改为字符串后工作:) ...我的意思是'/assets/Capture.PNG'
    • 能否请您告诉我这里的错误是什么............在这一行出现未捕获的异常错误...... setTimeout("PopupImageDisplay("+PopupImageContainer+"' ,'"+PopupImageCaption+"','"+PopupImageSRC+")",loadDelay);
    • 这里的错误完全相同。看看您在此处生成的字符串(可能在将其输入setTimeout 之前对其进行警告)并考虑这是否是有效的 JS。然后,切换到不使用字符串,而是使用a function
    • 我已将我的方法调用更改为 ..........setTimeout('PopupImageDisplay('+PopupImageContainer+','+PopupImageCaption+','+PopupImageSRC+')',loadDelay); ....但仍然出现同样的错误...请您纠正我
    • 我没有看到任何变化(除了不同的字符串分隔符)。试试alert('eval("PopupImageDisplay('+PopupImageContainer+','+PopupImageCaption+','+PopupImageSRC+')") doesnt work'); 看看有什么问题。我的答案已经包含解决方案 - 使用带有适当参数的调用 PupupImageDisplay 的函数
    【解决方案2】:

    当我在 javascript 之间错误地放置一些代码时发生这种情况

    【讨论】:

    • 在内联 JavaScript 上注入后端代码时的典型问题(无论如何这是一个不好的做法)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-03
    • 2020-09-17
    • 2019-02-13
    相关资源
    最近更新 更多