gpt4 book ai didi

ubuntu - 来自后台脚本的 window.state = 'fullscreen' 是否应该工作?

转载 作者:行者123 更新时间:2023-12-04 18:30:09 26 4
gpt4 key购买 nike

在此处使用 Xubuntu 14.04 和 Firefox 45.0.1

如果location.hash == "#fullscreen",我正在尝试从后台脚本中自动将浏览器窗口置于全屏状态。 .

这是通过执行 postMessage() 从特权网页的脚本请求的。内容脚本监听的内容,然后将这个请求委托(delegate)给后台脚本。

一切都按预期工作,包括预期的 console.log() background.js 中的值(请参阅下面的相关源代码片段)...除了,窗口不会变成全屏;实际上什么都没有发生,也没有关于要求用户启动事件的控制台警告,如果我从网页本身尝试类似的东西,我会收到这个警告(这就是我首先转向创建这个扩展的原因)。尝试w.state = 'minimized' ,例如,也不做任何事情。

问题:

  • Firefox WebExtensions API 是否应该支持 window.state改变(已经)?
  • 如果是这样,Firefox WebExtensions API 是否应该有足够的特权来发起全屏而不需要明确的用户交互?
  • 如果是这样,是否应该允许我从我试图这样做的上下文中这样做?
  • (X)ubuntu 或任何 Firefox 偏好可能是罪魁祸首吗?


  • 相关 manifest.json数据:

    "background": {
    "scripts": ["background.js"]
    },

    "content_scripts": [
    {
    "matches": ["*://privilegeduri/*"],
    "js": ["jquery-1.11.3.min.js", "content.js"],
    "run_at": "document_start"
    }
    ],

    // I've tried without "fullscreen" as well
    "permissions": [
    "tabs",
    "fullscreen", // no mention of this on MDN, but I tried it anyway
    "webNavigation"
    ]

    特权网页脚本:

    if( location.hash == '#fullscreen' ) {
    if( hasExtension() ) { // function that evaluates whether my extension is installed
    window.postMessage( {
    action: 'requestFullscreen'
    }, 'http://privilegeduri' );
    }
    }
    content.js脚本:

    function receiveMessage( e ) {
    if( e.source === window && e.origin === 'http://privilegeduri' ) {
    switch( e.data.action ) {
    case 'requestFullscreen':
    chrome.runtime.sendMessage( e.data );
    break;
    }
    }
    }

    window.addEventListener( 'message', receiveMessage );
    background.js脚本:

    function receiveMessage( message, sender, sendResponse ) {
    if( sender.id === chrome.runtime.id && sender.url.match( /^http:\/\/privilegeduri/ ) ) {
    switch( message.action ) {
    case 'requestFullscreen':
    browser.windows.get( sender.tab.windowId, {}, function( w ) {
    console.log( w.state ); // outputs 'normal'
    w.state = 'fullscreen';
    console.log( w.state ); // outputs the expected value 'fullscreen'
    } );
    break;
    }
    }
    }

    chrome.runtime.onMessage.addListener( receiveMessage );

    最佳答案

    啊...我刚刚遇到了 windows.update() 方法以及当我尝试设置 state通过updateInfo它确实给出了一个通知的参数对象:

    Type error for parameter updateInfo (Property "state" is unsupported by Firefox) for windows.update



    真遗憾。

    关于ubuntu - 来自后台脚本的 window.state = 'fullscreen' 是否应该工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36703730/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com