【问题标题】:Change html title with jquery multiple times用jquery多次更改html标题
【发布时间】:2026-01-23 04:10:01
【问题描述】:

我想在网站“连续”加载期间多次更改文档标题,例如输出需要一些时间加载的数据时。

这种方法可以在身体的任何部位多次使用

<script>
    $(document).attr('title', 'foo');
</script>

但我必须绕过一些内容安全策略保护,它不允许在 html 中使用纯 js。

所以我的想法是

(a) 使用会多次显示的 div,例如

<div class="foo" data-title="1"></div>

(b) 连同这个在 jquery 中

$('.foo').on('TRIGGER_NAME_HERE', function() {
    $(document).attr('title', $(this).attr('data-title'));
});

我已经尝试过所有类型的 TRIGGER_NAME_HERE,例如“show”等。即使是所有 .foo 元素上的简单“each”也不起作用。

我发现最好的是 on("show") 但这仅适用于页面末尾一次,但在页面“生成”期间不会多次。

知道我做错了什么吗?

【问题讨论】:

    标签: jquery title


    【解决方案1】:
    $(document).prop('title', 'test');
    

    这只是一个 jQuery 包装器:

    document.title = 'test';
    

    每次将新数据加载到页面的 DOM 中时,您可以编写一个函数并在收到响应后将新的标题字符串值传递给它,类似于这样

    function changeTitle(newTitle) {
        var title = newTitle;
        $(document).prop('title', title);
    }
    
    changeTitle('awesome new title');
    

    因此,无论何时需要一个新标题,无论是来自成功返回的 ajax 请求,还是单击按钮,或者 div 元素具有特定的“显示”类等,都可以将新值传递给changeTitle 函数更新标题

    【讨论】:

    • 正如我所写,我无法将 JS 代码放入 html 输出(Content-Security-Policy)。我必须将它分成 .js 文件中的 js 代码,并且只是一个触发 jquery 函数调用的 html 元素。