19

ブラウザの[履歴]タブをクリックすると、アクセスしたすべてのリンクが日付別に整理されたフォルダにアクセスできます。

Javascriptを使用してプログラムでこれにアクセスするにはどうすればよいですか?私はまだJavascriptを初めて使用しますが、次のようなものが必要です。

var aListOfDateLinkPairs = window.history.some_get_list_function;

これは任意のエンティティにとって大きなプライバシーの問題であると確信していますが、これを(プログラムで)自分のブラウザに実装したい場合はどうすればよいですか?

ありがとう!

4

4 に答える 4

19

一般に、履歴は、前後の機能を介する場合を除いて、JavaScriptがアクセスすることからブラウザによって保護されます。ある程度の履歴を表示できるハックがいくつかありますが、それはハックです。

プログラムで履歴を表示/変更したい場合は、ブラウザプラグインを介して行うことができます。たとえば、ChromeプラグインはこのAPIを使用できます

編集

Mozillaには、Javascriptで利用可能な履歴変更に関する情報もここにあります。

また、この質問はあなたが必要としているものと同じもののいくつかについて話しているように見えます。

于 2012-11-13T22:22:10.987 に答える
10

Javascriptは、ページが次のようにブラウザを制御した場合にのみ、基本的な呼び出しを提供します。

history.length
window.history.back()
history.forward()
window.history.go(-3)

ただし、独自のブラウザを作成する場合は、3GLを使用することになります。その場合、ユーザーが指定した検索フィールドまたはアドレスフィールドに入力した内容を完全に制御できるため、問題は発生しません。自分が何をしているかを知っている場合は、ユーザーが何をしたかを記録します。

于 2012-11-13T23:18:45.307 に答える
6

短い答えいいえ、一般的なJavascriptを介してブラウザの履歴にアクセスすることはできません。

http://crossrider.com/のようなクロスブラウザになる拡張機能を作成できます。

Placesブラウザの履歴にアクセスできるようにするストレージにアクセスするためのドキュメントは、Firefox用にここにあります: https ://developer.mozilla.org/en-US/docs/Using_the_Places_history_service

そしてクロムについてはここにあります:http://developer.chrome.com/extensions/history.html

Placessqliteデータベースと呼ばれるファイルがありPlaces.sqliteます。ブラウザからアクセスするのではなく、そのファイルから読み取るローカルアプリケーションを構築する場合は、私の意見ではもっと簡単です。

https://addons.mozilla.org/en-us/firefox/addon/sqlite-manager/ sqlite managerを使用して、データベースから直接日付に従って履歴を並べ替えることもできます。これがそのhttp://people.mozilla.org/~dietrich/places-erd.pngのERDです

于 2012-11-13T22:42:18.003 に答える
3

URIplace:スキーマは、以下に示すjavascript「唯一の」(必要なマウスを操作する)ソリューションの可能性を少しだけ提供します。

Historyまず、とを介してアクセスできるセッション履歴と、直接アクセスインターフェイスwindow.historyを持たない全体的なブラウザ履歴(FFでは、これはライブラリの一部として知られ、別のライブラリの一部はブックマークとして知られています)の違いに注意してください。 参照:javascript

テスト済み:

window.navigator.userAgent =
      Mozilla / 5.0(X11; U; Linux i686; en-US; rv:1.9.0.4)Gecko / 2008102920 Firefox /3.0.4
                                                                                                                               (Splashtop-v1.2.17.0)

(残念ながら、このテーマに精通しているのは、SplashtopシステムのデバイスVMによってQuickWebとしてリリースされたひどく不自由なFFが原因です。)

実行できることは次のとおりです。
注:

  • 上記で特定されたFFテスト環境-使用されている「規則」の一部は排他的であり、他のブラウザやFFバージョンでは広く利用できない可能性があります


  • 1単純なアクティベーションクリックよりも少し手作業による介入を犠牲にして...
    ここで提案するソリューションには、
    2ブックマークリンククリック
    3保存クリック
    4〜6ブックマークを開いてシーケンスを選択
    7結果ドラッグアンドドロップ
    8〜 10ブックマークからの結果のクリーンアップと削除
    (オートマタの順序、別名コンピューター自動化の全体的な原則に対するこのアナテマではありませんか?
    js jsはjsです-JavaScriptは[あまりにも]「単純」だと言ってください)

javascriptを使用place:して、適切なスキームURIを作成し.some_get_list_function、ブックマークします。

<a href="place:queryType=0&sort=8&maxResults=10"                       title="hysterix">extract history</a>

リンクをクリックすると失敗しますが、ブックマークを右クリックしてから、ブックマーク「成功」をクリックします。エルゴ、左クリックを解決してすぐにブックマークにリダイレクトすることもできます。

<a href="place:queryType=0&sort=8&maxResults=10" rel="sidebar" title="hystryx">extract history</a>

place:ブックマークされたURI" hystryx"をターゲットにドラッグアンドドロップします<form><textarea>。重要な制限は、このプロセスが履歴のURIのみを取得し、履歴の年表、タイトルなどは取得しないことです。この情報の一部(各URIを開いて抽出することでタイトルなど)を復元することは可能です。もちろん変更します。 URIを「適切な」リンクとしてレンダリングするためのURI「履歴内の「最新のアクセス日」)。

すべてを一緒に入れて:

data:text/html;charset=utf-8,
<html><title >Heuristic History Hysterics scURIple</title>
<!-- 
http://stackoverflow.com/questions/13369829/access-my-entire-browsing-history-via-javascript
                                                                                               /22773361# 22773361                       -->
<!-- 
   - scURIples (scriples) are generic schema (data:, javascript:, place:, ... ) URI that embed script
   - data: scURIples (scriples) are amenable to direct cut & paste URI address bar evaluation
   - generally no particular distinction is made between scURIples of different schema,
       such as this data: schema URI, but ... 
   - javascript: schema specific scURIples are called scriplets or bookmarklets                                -->
<!-- 
   a bookmark of this data: scURIple or its internal javascript: scriplet does the same thing             -->
<!--
  a place[s]: schema URI "works" from a bookmark only and not the address bar or a hyperlink      -->
<!-- for internal use only (by the scURIbbler used to edit this script):  
       javascript: with ( opener . document . forms[0] . JS ) value = 
                                        value . replace(  /\t|\n/g, function(c){ return escape(c) + c } )  ; close();//  
       scURIples are unscURIpulous 
              NB. no raw tabs, % 09 's collapse to null, quote raw %'s w/ non-numerics, };'s ,  ...             -->
<script>
javascript:

String.prototype.HTMLtagWrap   =
    function ( tag,  attrs)  { 
        return  tag[0]=="/" ?
            "<"  +tag+                                ">"  +this+  "<"  +tag.substr(1)+  (attrs?" "+attrs:"") +  ">"    :
            "<"  +tag+ (attrs?" "+attrs:"") + ">"  +this+  "</"  +tag+                                                 ">"
    }  ;

String.prototype.HTMLwrapTags =
   function ( tagRA, atRA) { 
      return tagRA[0] ? this . HTMLtagWrap( tagRA.pop(), atRA.pop()) . HTMLwrapTags( tagRA, atRA)
                                :  this
   }  ;

/* alert */ ( str =
( function(x){return x.HTMLtagWrap('title') + x.HTMLwrapTags(['/pre','center','b'] , [ ] ) }
                               ('Heuristic History Hysterics')+
    '1. '.HTMLtagWrap('b') +
    '<input     id=URIplcQry     type=text    size=120  ' +
                           'value="place:queryType=0&sort=8&maxResults=25" >\n' +
    'suggestions:\t try just a raw place: with no corpus or places: (undocumented with an s)\n' + 
    'auto attribution:\t' + 
    '<input type=button onclick=URIplcQry.value+="&"+this.value  value=sort=4                        >  \t' + 
    '<input type=button onclick=URIplcQry.value+="&"+this.value  value=type=5                       >  \t' + 
    '<input type=button onclick=URIplcQry.value+="&"+this.value  value=queryType=1            >\t  ' + 
    '<input type=button onclick=URIplcQry.value+="&"+this.value  value=domain=""                 >\t  ' + 
    '<input type=button onclick=URIplcQry.value+="&"+this.value  value=includeHidden=true  >\t   ' + 
    '<input type=button onclick=URIplcQry.value+="&"+this.value  value=onlyBookmarked=true >\t' + 
    '\n\n2. '.HTMLtagWrap('b') +
    'This link bookmarks the place: URI from step 1: '  +
    'place: query URI href results' .
        HTMLtagWrap(  'A', 
            ' href="places:"  rel="sidebar"  title="hystryx  " id="hystryx  " ' +
            ' onmouseover ="with(this)title=id+(href=document.forms[0].URIplcQry.value)"  '
        ) +
    '\t(hint: to see the actual link, mouse over it 2x)'  +
    '\n\n3. '.HTMLtagWrap('b',   ' style="vertical-align:top;" '  ) +
  ( '\n\t\t\tINSTRUCTIONS\n\n' +
    '1. make the href place: query for the link in step 2. \n' +
    '2. click the link to create a bookmark that accesses the URI library\n' +
    '3. drag & drop the new bookmark (aka a container) here (replace this content)\n' +
    '4. cleanup and delete the new bookmark if desired\n'  +
    '5. to be done: add a scURIbbler to massage this textarea\n'  +
    '\n\n' +
    'tested with userAgent:\t\t\t\t'  +
    'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4'  +
                                                                                                         '(Splashtop-v1.2.17.0) \n'  +
    '\twindow.navigator.userAgent =\t\t'  + window.navigator.userAgent +
    '\n ' 
  ) .HTMLtagWrap('textarea', 'id=histURIs  rows=12 cols=120 nowrap') +
   '\n\n4. ...'.HTMLtagWrap('b') +
   '\n\n5. '.HTMLtagWrap('b') +
   'scURIbbler:  <input   type=text    size=120  id=histURIpg ' +
       ' value="javascript:with(opener)with(document.forms[0]) '                                              +
           ' ( URIplcQry.value.HTMLtagWrap(\'b\') + '                                                                  +
              ' histURIs.value.replace(/^.*$/g,function(m){return m.link(m)}) '                              +
          '  ).HTMLwrapTags( \'html pre\'.split(/ +/) , [ ] ) '                                                                     +
    ' "><input type=button value="open histURIs" onclick=window.open(histURIpg.value )>  ' +
    '  '
)  .  HTMLwrapTags ( ["html", "form", "pre"] , [ ] ) 
);

/*
window.open (    "data:text/html;charset=utf-8,"  +  str . replace ( /\n/g,  '%'+'0A ' )        );
*/
document.write ( str );

</script>
</html>
于 2014-03-31T22:22:28.870 に答える