ページを印刷するChrome拡張機能のサンプル

Chrome拡張機能開発中に参考にしようとした公式サンプルが、最近のブラウザのバージョンに対応していなかったので調査した。

エラー内容

公式のこのページにある「Print this page」のリンク先から、zipファイルをダウンロードして中身をChromeに取り込むとこんなエラーが出る。

Unchecked runtime.lastError while running tabs.update: JavaScript URLs are not allowed in chrome.tabs.update. Use chrome.tabs.executeScript instead.

原因

chrome.tabs.updateのパラメータのupdatePropertiesにURLを指定できるが、そこにJavaScript URL(サンプルコードでいうと"javascript:window.print();")を指定できないため。

対策

エラー文にある通り、chrome.tabs.updateの代わりにchrome.tabs.executeScriptを使う。

この一行を

chrome.tabs.update(tab.id, {url: action_url});

以下のように修正する。

chrome.tabs.executeScript(tab.id, {code: action_url});