如何在 Chrome 中显示网页的完整标题?

如何在 Chrome 中显示网页的完整标题?

浏览器创建者很久以前就从标题栏中删除了页面标题,从而阻止用户检查正在查看的内容。

有人知道是否可以重新启用 Chrome 中的标题栏,或者是否有任何解决方法?

我有适用于 Windows 10 的 Chrome 84.0.4147.135。

chrome://flags/#windows10-custom-titlebar标志不再存在?

chrome://flags/#top-chrome-md走了

“设置/外观”中显示标准标题栏的选项也消失了。

答案1

要在 Chrome 中显示网页的完整标题,请将光标悬停在打开该页面的浏览器选项卡上。如果标题太长而无法在选项卡中显示,则会出现一个工具提示,显示完整标题。这可以帮助您阅读整个标题而无需打开新选项卡。

答案2

我编写了一个 chrome 扩展程序来解决了这个问题;不幸的是,它在任何地方都可以运行……但在 stackexchange 网站上除外!(以及任何禁止框架的网站)。(编辑:请参阅末尾的版本,了解适用于所有网站的情况

对于简单的网站,它可以正常工作,显示标题和完整的网址,如果您有许多选项卡和许多扩展,通常两者都会被裁剪到不可接受的长度。

有用:

  • 打开新标签页时
  • 刷新标签时
  • 根据请求,点击其图标

清单.json:

{
  "name": "ShowTitle",
  "version": "1.0",
  "permissions": [
    "tabs"
  ],
  "description": "Show page title and url (titlebar replacement)",
  "background": {
    "persistent": false,
    "scripts": [
      "background.js"
    ]
  },
  "content_scripts": [
    {
      "matches": [
        "*://*/*"
      ],
      "js": [
        "content.js"
      ],
      "run_at": "document_end",
      "all_frames": true
    }
  ],
  "browser_action": {
    "title": "Test"
  },
  "manifest_version": 2
}

background.js:

chrome.browserAction.onClicked.addListener(function() {
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
        chrome.tabs.sendMessage(tabs[0].id, {command: "showTitle"}, function(response) {
            //console.log(response.result);
        });
    });
});

chrome.tabs.onCreated.addListener(function() {
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
        chrome.tabs.sendMessage(tabs[0].id, {command: "showTitle"}, function(response) {
            //console.log(response.result);
        });
    });
});


chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
    if ((changeInfo.status == 'complete') && (tab.active)) {
        chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
            chrome.tabs.sendMessage(tabs[0].id, {command: "showTitle"}, function(response) {
                //console.log(response.result);
            });
        });
    }
})

内容.js:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse)    {
    console.log(request.command);
    if (request.command == "showTitle") {
        console.log("Adding title frame...");
        TITLE_HEIGHT = 60;

        // Create an iframe which contains title and URL
        frTitle = document.createElement("iframe");
        frTitle.setAttribute("src","")
        frTitle.setAttribute("width",window.innerWidth)
        frTitle.setAttribute("height",TITLE_HEIGHT)
        html = '<body><center style="background-color:#aaaaaa"><span>Title: ' +  document.title  + '</span><br><span>URL: ' + document.location + '</span></center></body>';
        blob = new Blob([html], {type: 'text/html'});
        frTitle.srcdoc = html;

        br = document.createElement("br");

        // Cretae a frame where to copy original page contents:
        frBody = document.createElement("iframe");
        frBody.setAttribute("src",window.location)
        frBody.setAttribute("width",window.innerWidth)
        frBody.setAttribute("height",window.innerHeight-TITLE_HEIGHT)

        orgBody = document.body; // Store original page

        // Create new body containing the two frames:
        newBody = document.createElement("body");
        newBody.appendChild(frTitle);
        newBody.appendChild(br);
        newBody.appendChild(frBody);

        // Replace original body by new one:
        document.body = newBody;

        //sendResponse({result: "success"});
    } else {
        console.log("Another command.");
    }
});

编辑:

为了使其在那些不允许框架的网站上也能正常工作,我必须在 background.js 中引入一个切换功能,通过鼠标单击来启用/禁用扩展:

var enable=false;

chrome.browserAction.onClicked.addListener(function() {

enable = enable ? false : true;
if(enable){
    //turn on...
    chrome.browserAction.setIcon({ path: 'showtitle_on.png' });
    chrome.browserAction.setBadgeText({ text: 'ON' });
    chrome.tabs.executeScript(null, { file: 'content.js' });
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
        chrome.tabs.sendMessage(tabs[0].id, {command: "showTitle"}, function(response) {
        //console.log(response.result);
            console.log("***ATTIVA***");
        });
    });
}else{
    //turn off...
    chrome.browserAction.setIcon({ path: 'showtitle_off.png'});
    chrome.browserAction.setBadgeText({ text: 'Off' });
            console.log("***NON ATTIVA***");
}


});

chrome.tabs.onCreated.addListener(function() {
    if(enable){
        chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
            chrome.tabs.sendMessage(tabs[0].id, {command: "showTitle"}, function(response) {
                //console.log(response.result);
            });
        });
    }
});


chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
    if(enable){
        if ((changeInfo.status == 'complete') && (tab.active)) {
            chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
                chrome.tabs.sendMessage(tabs[0].id, {command: "showTitle"}, function(response) {
                    //console.log(response.result);
                });
            });
        }
    }
})

我还在Manifest.json中添加了默认的ON状态:

  "browser_action": {
    "default_title": "ShowTitle",
    "default_icon": {
        "16": "showtitle_on.png"
    }
  },

相关内容