Chrome履歴API-エピックフェイル

Chromeは誕生以来長く成功した道を歩んできましたが、本当にそんなに良いのでしょうか? 私はそのすべての側面について主張することはありませんが、個人的に直面しなければならない問題に国民の注目を集めたいと思います。



数か月前、Chrome用の拡張機能を作成することにしました。 履歴ページchromeを再作成するために、小さいながらも非常に燃えるようなアイデアが長い間私の頭の中に隠されていました:// history /。 そして、これはそれから来たものです。





ここでは、履歴を操作するためのAPIについて説明します



はじめに、カレンダーをページに追加し、任意の日のアドレスのリストを取得し始めました。 この目的のために、chrome.history.search()関数は、リクエストとして、以下を含むオブジェクトを対象としています。

text-検索するテキスト(すべてのアドレスが必要な場合、このテキストは空で送信されます)

startTime、endTime-期間

maxResults-結果の数の制限(すべてを検索するには0)



結果として、関数はオブジェクトの配列を返します

HistoryItem (オブジェクト)

id (文字列)

url (オプションの文字列)

タイトル (オプションの文字列)

lastVisitTime (オプションの数値)

visitCount (オプションの整数)

typedCount (オプションの整数)



lastVisitTimeが特に注目に値する場合、このパラメーターには最後のページアクセスの時間が含まれます。 つまり 2011年9月1日から9月6日までの期間のアドレスのリストを取得しようとし、アドレスhttp://example.com/が含まれていた場合、たとえば、今日が2011年9月9日の場合、 lastVisitTimeパラメーターには常に今日の日付が含まれます、および発行の結果、次のように完全な不合理が判明しました。



画像



最初は、正しい日に住所にアクセスした日付を表示したかったのですが、APIの奇妙さのために、最後の訪問の時刻を表示する必要がありました。 特定の日のストーリーを表示する場合、この欠点はそれほど重要ではありませんが、一定の時間間隔でストーリーを表示する場合、大きな不快感を引き起こし始めます。



chrome.history.getVisits()助けになり、URLにアクセスしたすべての日付を含むオブジェクトの配列を返しますが、アドレスごとに呼び出すとリソースを大量に消費します。 そこで、URL情報ボタンを追加しました。

画像



次の失望は、ストーリーの住所とタイトルのテキストの検索でした。 要求オブジェクトのテキストパラメータに渡すものは何でも、Chrome APIはすべてを慎重に返しますが、見つけようとしていたものではありません。 結果の分析を自分で書く必要がありました。



その後、ストーリーの要素を削除し始めました。 あなたはおそらく、私が再び失敗し、その結果、望ましい結果を達成するために多くの松葉杖を使用したことをすでに推測していました。



次の2つの機能があります。

chrome.history.deleteUrl() -履歴からアドレスを完全に削除します。

chrome.history.deleteRange() -時間間隔ですべてのアドレスを削除します。



考え直すことなく、彼は各アドレスの横に「削除」ボタンを追加し、 deleteUrl()を掛けました。 ただし、クリックごとに2〜4秒の遅延が発生し、異なるURLでの一連のクリック「削除」によってブラウザが数分間ハングする可能性があります。 論理的な継続はバスケットの追加でしたが、それでも問題は解決しませんでした。 300〜400のアドレスを削除すると、ブラウザが10分間中断されます(Intel Core 2 Duo E8400)。



C deleteRange()はさらに悲しくなりました。 「URL情報」ウィンドウ(上のスクリーンショットを参照)で、各訪問の横に[削除]ボタンを追加したかったのですが、結局のところ、これは無駄な仕事でした。 この関数は、最後の訪問に関する情報のみを削除できます。



また、 HistoryItem (オブジェクト)に各レコードのIDが存在する理由も不明ですが、 idで削除できる機能はありません。



拡張機能が既に一般にアップロードされ、何千人ものユーザーによって正常に使用されたとき、「歴史の10週間以上さかのぼる問題を修正しないでください」というレビューに注目しました。 Chromeの訪問履歴は非常に限られており、最後のアドレスの約25,000であることが判明しました。 私の自宅のPCでブラウザを使用することに熱心なので、これらは過去3か月間です。



画像



他のすべてのURLは、ユーザーに対してサイレントかつ非表示で、/ dev / nullに送信されます。



なぜこれをすべて書いたのですか? 恐らく、これは痛みを伴う人の魂を駆り立てるラッシュであり、10分間で300個のアドレスを削除する必要がある理由を(私の拡張子だけでなく)ユーザーに説明しようとする試みです。 おそらく、善良な企業の誰かがこのメモに興味を持っているでしょう...



ここに私の拡張機能へのリンクがあります:

履歴カレンダー

履歴カレンダーボタン



また、Chromeリポジトリにはアナログの2つの価値のある競合他社があります。

最近の歴史

歴史2



All Articles