从网页发送任务到扩展chrome记录器捕获不起作用

问题描述

我有一个Google Chrome浏览器的扩展程序,用于记录标签。 当我单击弹出按钮时,此扩展程序将开始记录当前选项卡,但是我想当用户单击webPage内的按钮时,该扩展程序开始记录。

我使用content.js从网页向background.js发送消息。

消息将成功发送到后台,但是当我开始记录时,它会提示错误

“未经检查的runtime.lastError:当前页面调用扩展名(请参见activeTab权限。无法捕获Chrome页面。”

这是我的网页代码

<html>
    <body>
        <script>
        var go = function() {
        window.postMessage({type: 'REC_START'},'*')
>
        <a href="javascript:go();">Click me</a>
    </body>
</html> 

这是content.js

window.addEventListener(
    'message',function(a){
        var data = a.data;
        switch(data.type){
            case 'REC_START':
                chrome.runtime.sendMessage('REC_START')
                break;
        }
    }
)

这是background.js代码

chrome.runtime.onMessage.addListener(function(request,sender,sendResponse){
    switch(request){
        case 'REC_START':
            startRecording();
            break;
    }
})

function startRecording() {
    console.log('Starting to record.');

    const options = { audio: true };
    chrome.tabCapture.capture(options,(stream) => {
        // if (stream === null) {
        //     console.log(`Last Error: ${chrome.runtime.lastError.message}`);
        //     return;
        // }

        let recorder;
        try {
            recorder = new MediaRecorder(stream);
        } catch (err) {
            console.log(err.message);
            return;
        }

        console.log('Recroder is in place.');

        recorder.addEventListener('dataavailable',event => {
            const { data: blob,timecode } = event;
            console.log(`Got another blob: ${timecode}: ${blob}`);
        });
        const timeslice = 5 * 1000;
        recorder.start(timeslice);
    });
}

谢谢:-)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)