Как я могу получить доступ к истории веб-браузера посетителя, используя javascript [duplicate]

Существует несколько способов объединить две строки вместе.

Использовать оператор конкатенации ..=)

В PHP . - оператор конкатенации, который возвращает конкатенацию его правого и левого аргументов

$data1 = "the color is";
$data2 = "red";
$result = $data1 . ' ' . $data2;

Если вы хотите добавить строку в другую строку, вы должны использовать оператор .=:

$data1 = "the color is ";
$data1 .= "red"

Complex ( curly) синтаксис / двойные кавычки

В PHP-переменные, содержащиеся в двойных кавычках, интерполируются (т.е. их значения «выгружаются» для переменной). Это означает, что вы можете поместить переменные вместо строк и просто поместить пространство между ними. Кубические фигурные скобки дают понять, где находятся переменные.

$result = "{$data1} {$data2}";

Примечание: это также будет работать без фигурных скобок в вашем случае:

$result = "$data1 $data2";

Используйте sprintf() или printf()

sprintf() позволяет форматировать строки с использованием мощных параметров форматирования. Это слишком сложно для такой простой конкатенации, но это удобно, когда у вас сложная строка и / или вы хотите сделать некоторое форматирование данных.

$result = sprintf("%s %s", $data1, $data2);

printf() делает то же самое, но сразу же Отобразить вывод.

printf("%s %s", $data1, $data2);
// same as
$result = sprintf("%s %s", $data1, $data2);
echo $result;

Heredoc

Heredocs также может использоваться для объединения переменных в строку.

$result= <<

Используйте , с echo()

Это работает только при повторном выпуске содержимого и не присваивании переменной. Но вы можете использовать запятую, чтобы отделить список выражений для PHP для эха и использовать строку с одним пробелом в качестве одного из этих выражений:

echo $data1, ' ', $data2;

11
задан algorithmicCoder 14 November 2012 в 00:16
поделиться

4 ответа

В целом история защищена браузером от доступа к javascript, кроме как с помощью функции «назад» и «вперед». Есть некоторые хаки , которые могут просматривать некоторый объем истории, но они просто такие - хаки.

Если вы хотите программно просмотреть / изменить историю, вы можете сделать это через плагинов браузера. Например, Chrome-плагины могут использовать этот API

EDIT

Mozilla также имеет некоторую информацию об изменении истории, доступную Javascript здесь .

Это также похоже на , этот вопрос говорит о некоторых из тех вещей, которые вам нужны.

12
ответ дан Community 22 August 2018 в 09:09
поделиться

Short Answer no, вы не можете получить доступ к истории своего браузера через общий Javascript.

Вы могли бы создать расширение, которое было бы перекрестным браузером с чем-то вроде: http://crossrider.com /

Документы для доступа к хранилищу Places, которые позволяют вам получить доступ к истории браузера, приведены здесь для firefox: https://developer.mozilla.org/ ru-US / docs / Using_the_Places_history_service

И для хром это здесь: http://developer.chrome.com/extensions/history.html

Файл Places, названный Places.sqlite, является базой данных sqlite, если вы создадите локальное приложение, которое читает из этого файла, вместо доступа к нему из вашего браузера, это будет проще, на мой взгляд.

Вы также можете использовать менеджер https://addons.mozilla.org/en-us/firefox/addon/sqlite-manager/ sqlite и заказать историю в соответствии с датами непосредственно из базы данных. Вот ERD для этого http://people.mozilla.org/~dietrich/places-erd.png

3
ответ дан adantj 22 August 2018 в 09:09
поделиться

Схема URI place: предоставляет модификацию потенциала для решения javascript «only» (mousing around required), приведенного ниже.

Сначала обратите внимание на различие между историей сеанса, к которой можно получить доступ через History и window.history и общую историю браузера (в FF это называется частью библиотеки, а другая часть библиотеки - закладками), которая не имеет прямого интерфейса javascript доступа. ref:

проверено с помощью:

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)

(Интимное знакомство с этим предметом, к сожалению, связано с сильно искалеченным FF, выпущенным как QuickWeb по VM устройства в системе Splashtop.)

Вот что можно сделать: Примечание:

  • среда тестирования FF, указанная выше, - некоторые из используемых «условностей», возможно, эксклюзивный и не универсальный доступный в других браузерах или версиях FF
  • за счет немного более интенсивного ручного трудоемкого вмешательства, чем 1 простой щелчок активации ... предлагаемое здесь решение также требует 2 ссылки на закладку, нажмите 3 сохранить его щелчок 4 ~ 6 открывать закладку и выбрать последовательность 7 результатов drag & amp; drop 8 ~ 10 cleanup и удалить результаты из закладок (не является ли это анафемой для всей предписания Order of Automata или автоматизации компьютера? js js is js - Just Saying JavaScript Just Just слишком просто)

Используя конструкцию javascript для URI схемы place: с соответствующим .some_get_list_function и закладок.

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

Щелкнув ссылку, щелкните правой кнопкой мыши по закладке, а затем щелкнув закладку " преуспевает». Ergo, также может разрешить левый щелчок, чтобы сразу перенаправить на закладку.

<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>
0
ответ дан ekim 22 August 2018 в 09:09
поделиться

Javascript предлагает только базовые вызовы, когда ваша страница управляет браузером, например:

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

Но если вы должны написать свой собственный браузер, тогда вы будете использовать 3GL, d полностью контролировать то, что пользователь набрал в полях поиска или адреса, которые вы указали, поэтому у вас не должно быть проблем с записью того, что сделал пользователь, если вы знаете, что делаете.

4
ответ дан John Citizen 22 August 2018 в 09:09
поделиться
  • 1
    Потрясающие! Я хотел знать, была ли у моей текущей страницы какая-либо история для отображения или нет кнопки «назад», а history.length работал просто отлично! – falsarella 1 October 2015 в 14:14
Другие вопросы по тегам:

Похожие вопросы: