ChromeからSafariへのより優れたブックマークレット

ChromeからSafariへのより優れたブックマークレット
ChromeからSafariへのより優れたブックマークレット

1月に、iOS版Google Chromeで開いているウェブページをAppleのSafariに送信するブックマークレットを作成しようと試みました。しかし、Googleは「Safariで開く」オプションの提供を好ましく思っていなかったことと、アプリのURLスキームがChromeの起動時と終了時に興味深い結果を生み出したため、驚くほど複雑な作業となりました。

今朝、読者の@CNWLshadowさんが紹介してくれたブックマークレットのことを思い出しました。解決策を投稿していなかったことに気づいたんです。ブラウザのブックマークレットとPythonistaスクリプトで構成されていて、ワンタップで動作します。

Pythonista 1.3 では、開発者の Ole Zorn が、リンクに をプレフィックスとして付けることで Safari でのみリンクを開く機能を追加しましたsafari-。これにより、次のようなシンプルなブックマークレットを作成できるようになりました。

  • Chrome で現在の URL を開きます。
  • Pythonista に渡してください。
  • Safari で開きます。

このブックマークレットは非常に基本的なものです。Pythonistaのルートディレクトリに「ToSafari」というスクリプトが存在することを前提としており、現在開いているウェブページへの引数を送信します。以下のコードをコピーして、Chromeにブックマークとして追加できます。

javascript:window.location='pythonista://ToSafari?action=run&argv='+encodeURIComponent(document.location.href);

スクリプト自体もシンプルです。まず、スクリプトに送られた引数の数を数えます。引数が2つ未満の場合は、URLが受信されなかったことを出力します。引数が2つ以上の場合は、URLを受け取り、先頭に . を付けてSafariに送信しますsafari-

# Receives a URL via JS bookmarklet and sends it to Safari
# Bookmarklet: javascript:window.location='pythonista://ToSafari?action=run&argv='+encodeURIComponent(document.location.href);
# Assumes script is in the root of Pythonista and called 'ToSafari'


import sys
import webbrowser

numArgs = len(sys.argv)

if numArgs < 2:
 print 'No URL was received'
 else:
 url = sys.argv[1]

 webbrowser.open('safari-' + url)

セットアップが完了すると、iPad miniでスクリプトを実行するのにコールドスタート(マルチタスクトレイからPythonistaを強制終了)から約6秒かかります。Pythonistaがバックグラウンドで動作している場合は1秒です。最適な解決策ではありませんが、ChromeからSafariへのブックマークレットを手動で操作することなく動作させるには、許容できる妥協点だと思います。

クラブ・マックストーリーズ

追加コンテンツと特典にアクセスする

Club MacStories は 2015 年に設立され、ほぼ 10 年間にわたって毎週独占コンテンツを提供してきました。

毎週、毎月の電子メール ニュースレターから始まったものが、すべての MacStories ファン向けに設計されたメンバーシップ ファミリーに成長しました。

詳細については、こちらおよびクラブの FAQ をご覧ください。

Club MacStories : アプリ、ヒント、自動化ワークフロー、長​​文執筆、MacStories Unwind ポッドキャストへの早期アクセス、定期的な景品など、盛りだくさんの情報を満載した、電子メールと Web 経由の週刊および月刊ニュースレター。

Club MacStories+ : Club MacStories が提供するすべての機能に加え、アクティブな Discord コミュニティ、クラブの過去のカタログ全体を閲覧するための高度な検索機能とカスタム RSS 機能、ボーナス コラム、多数のアプリ割引などが含まれます。

Club Premier : 上記のすべてに加え、早期に、広告なしで、高ビットレートのオーディオで配信される当社の主力ポッドキャストの拡張バージョンである AppStories+ が含まれます。