【问题标题】:Have to wait to execute jQuery till the service is loaded必须等待执行 jQuery 直到服务加载完毕
【发布时间】:2016-04-27 06:06:13
【问题描述】:

我正在尝试在新选项卡中打开超链接。为了在新标签中加载,我使用以下代码,它将运行一次并在锚标签中添加 target="_blank":

<script>
    $(document).ready(function(){
        alert("ready");
        $("a", "#myCustomContent").each(function() {
            $(this).attr('target', '_blank');
        });
    }); 
</script>

但是在从服务调用中检索内容之前执行了 jQuery,我无法在新选项卡中打开超链接,所以我尝试使用以下代码:

$(window).bind("load", function() {
   $("a", "#myCustomContent").each(function() {
       $(this).attr('target', '_blank');
   });
});

这里是因为某些图像或文件无法加载而失败,还是需要更多时间?

我需要找到一种方法来调用 jQuery 以在新选项卡中打开“ahref”标签。

【问题讨论】:

  • 你所说的服务是什么意思,你用的是ajax
  • @Optimus,我将富文本编辑器的内容存储在内容管理系统中,然后我使用 cmis 服务获取内容并显示在新页面中。在这里,我需要在新选项卡

    中打开超链接。 “editorContent”将包含文本

标签: javascript jquery twitter-bootstrap jquery-ui jquery-events


【解决方案1】:

试试这个。也许这会解决问题

$(document).click(function(e){
    if($(e.target).parents('#myCustomContent').size() && e.target.tagName=="A"){
        e.preventDefault();
        window.open(e.target.href);
        }
      })

【讨论】:

  • 感谢您的帮助,代码运行良好。我正在使用 Jermey 提到的那段代码。他在哪里设置点击事件锚标记的属性。
  • 没关系。我很高兴你找到了答案。
  • 还要考虑到,有时浏览器可能会阻止弹出窗口。
  • 我正在使用上面的代码,如果“ahref”中已经有 http://,它可以正常工作。如果 http:// 不存在,那么它将在新选项卡中打开 url,但会将 url 附加到现有 url,例如://localhost:8443/newapp/static/html/www.google.com 怎么能如果使用您的代码不存在,我将 http:// 添加到超链接
  • 假设当前页面的 url 是“http://domen.en/path1”。如果一个标签有href="/path2",那么它会打开一个带有“domen.en/path2”的新窗口。如果标签有href="path3/path4",那么它会打开带有url“domen.en/path1/path3/path4”的新窗口。如果您的标签在另一个域中有另一个 url,那么浏览器可能会阻止弹出窗口
【解决方案2】:

如果没有看到更多代码,我将很难准确理解最佳步骤是什么,但听起来您在代码运行后加载了带有链接的图像。您总是可以尝试在加载时更新点击处理程序的方法:

$('body').on('click', 'a', function(){
    $(this).attr('target', '_blank');
});

或者您可以查看一个函数来检查您的图像是否已加载并设置超时,直到它们全部设置完毕。

var changeTarget = function() {
    if ($('body').find('#img')) {
        //do code it's loaded
    } else {
        //repeat in 100 miliseconds
        setTimeout(changeText,100);
    }
}
changeTarget();

【讨论】:

  • 感谢这段代码,第一段代码就是我想要的。
【解决方案3】:

以下代码可以很好地在新选项卡中打开超链接。

如果页面中的某些锚标签(超链接)必须在新窗口中打开,则可以使用以下代码

$(document).click(function(e){
    if($(e.target).parents('#myCustomContent').size() && e.target.tagName=="A"){
        e.preventDefault();
        window.open(e.target.href);
        }
      });

其中“myCustomContent”是分配给部门的 id 或

超链接所在的标签。

如果页面中的所有锚标记都必须在新选项卡中打开,则可以使用以下代码。

$('body').on('click', 'a', function(){
    $(this).attr('target', '_blank');
});

感谢@JeremyS 和@doniyor 的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 2014-01-03
    • 2014-02-06
    • 2019-04-28
    • 1970-01-01
    相关资源
    最近更新 更多