从加载的 JQueryUI 选项卡设置页面标题 <title> [closed]

Set page title from JQueryUI tab loaded <title> [closed]

提问人:user3191192 提问时间:11/13/2023 更新时间:11/14/2023 访问量:32

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答这个问题。

8天前关闭。

我们正在将内容加载到 JQuery UI 选项卡中,该内容包含 HTML 结构,如下所示:

<html lang="en-US">
<head>
<title>Product ABC</title>
</head>
<body>
Product description, images, order button, etc...
</body>
</html>

我需要获取该文本并将其作为浏览器选项卡标题,例如<title>document.title = $(loadedContent).filter('title').text();

但似乎 JQuery UI 选项卡控件没有直接公开 ajax 响应。“load”事件提供对加载内容的面板的引用,但它似乎只包含内容,已被删除。<body><head>

任何想法如何捕获JQuery UI Tab加载的内容?<title>

javascript jquery jquery-ui

评论

0赞 Pete 11/13/2023
你不能从激活事件中得到它吗?
1赞 ControlAltDel 11/13/2023
我敦促您考虑使用另一个JS UI库而不是jQuery-UI...这个项目已经很多年没有维护了。
3赞 freedomn-m 11/13/2023
<head> 已被删除 - 您只能有一个元素,因此它不会将其添加为 .您的内容不应加载整个页面,而应加载部分页面(不带标签),只需加载正文内容。jquery-ui 很友善,为您“修复”了它。将 包含在正文中的隐藏元素中,然后从那里读取它。<head>body<html><head><body>title
0赞 Twisty 11/14/2023
请提供一个最小的可重复示例。您应该能够从对象中找到标题。ui.tab

答:

0赞 Twisty 11/14/2023 #1

请看以下示例:https://jsfiddle.net/Twisty/uxtnhmcp/

JavaScript的

$(function() {
  function getTabTitle(tab) {
    console.log("Found Tab Title: " + tab.text().trim());
    return tab.text().trim();
  }

  function setDocTitle(title) {
    document.title = title;
    console.log("Document Title change to '" + title + "'");
  }

  $("#tabs").tabs({
    beforeLoad: function(e, ui) {
      console.log(e.type);
      ui.jqXHR.fail(function() {
        ui.panel.html(
          "Couldn't load this tab. We'll try to fix this as soon as possible. " +
          "If this wouldn't be a demo.");
      });
    },
    load: function(e, ui) {
      if (ui.tab != undefined) {
        setDocTitle(getTabTitle(ui.tab));
      }
    },
    activate: function(e, ui) {
      setDocTitle(getTabTitle(ui.newTab));
    }
  });
});

or 对象将是 HTML 中的列表项。我们可以从元素中获取 并将其用作 Title。tabnewTab.text()

评论

0赞 user3191192 11/15/2023
我想你误解了这个问题。目标是将页面标题设置为选项卡加载的内容中的 <title> HTML 元素的文本。这会将页面标题设置为选项卡名称,该选项卡名称不是来自动态加载的 HTML。
0赞 Twisty 11/16/2023
@user3191192,这可以通过将生成的 HTML 读取到 jQuery 对象中,然后找到元素并获取其文本内容来完成。 例如。title$(results).find('title').text();