Как сохранить данные для конкретной вкладки BROWSER, а не конкретный экземпляр хоста / окна? [Дубликат]

Недавно мне пришлось разбить слово на верблюжьей основе на подслов. Нет разделителей, только верхние символы.

#include <string>
#include <list>
#include <locale> // std::isupper

template<class String>
const std::list<String> split_camel_case_string(const String &s)
{
    std::list<String> R;
    String w;

    for (String::const_iterator i = s.begin(); i < s.end(); ++i) {  {
        if (std::isupper(*i)) {
            if (w.length()) {
                R.push_back(w);
                w.clear();
            }
        }
        w += *i;
    }

    if (w.length())
        R.push_back(w);
    return R;
}

Например, это разделяет «AQueryTrades» на «A», «Query» и «Trades». Функция работает с узкими и широкими строками. Поскольку он уважает текущую локаль, он разбивает «RaumfahrtÜberwachungsVerordnung» на «Raumfahrt», «Überwachungs» и «Verordnung».

Примечание std::upper должно быть действительно передано как аргумент шаблона функции. Тогда более обобщенная из этой функции может расщепляться на разделителях, таких как ",", ";" или " ".

23
задан user1588877 10 August 2012 в 06:50
поделиться

6 ответов

Вы не можете получить идентификатор вкладки с javascript, как бы там ни было какое-то решение, которое может помочь вам с использованием разных сеансов / файлов cookie, когда пользователь открывает новую вкладку.

Некоторая ссылка:

Получить вкладку браузера Index / Id

получить URL-адреса вкладок firefox из расширения firefox

Как отличаться Получить уникальный сеанс на каждой вкладке браузера

asp.net - сеанс - несколько браузеров вкладки - разные сеансы?

4
ответ дан Community 25 August 2018 в 01:38
поделиться

Одним из возможных решений является использование свойства window.name, но я не хочу его использовать, потому что кто-то еще может его использовать.

Я нашел еще одно возможное решение: using sessionStorage. Он поддерживается FF3.5 +, Chrome4 +, Safari4 +, Opera10.5 + и IE8 +.

1
ответ дан DioNNiS 25 August 2018 в 01:38
поделиться

Если нет шансов, что пользователь откроет 3 вкладки в течение 2 миллисекунд, можно использовать временную метку и сохранить ее в window.name и использовать это как ключ в вашем поиске. Значение window.name останется с вкладкой до ее закрытия.

Временная метка

1
ответ дан eaglei22 25 August 2018 в 01:38
поделиться

Вы должны использовать html5, но sessionStorage в сочетании со случайным директивом, похоже, будет тем, что вы хотите.

10
ответ дан jmoreno 25 August 2018 в 01:38
поделиться

SessionStorage - за вкладку / окно, поэтому вы можете определить случайное число в sessionStorage и сначала получить его, если существует:

var tabID = sessionStorage.tabID ? sessionStorage.tabID : sessionStorage.tabID = Math.random();

UPDATE: в некоторых случаях у вас может быть такое же sessionStorage в нескольких (например, при дублировании вкладки). В этом случае следующий код может помочь:

var tabID = sessionStorage.tabID && sessionStorage.closedLastTab !== '2' ? sessionStorage.tabID : sessionStorage.tabID = Math.random();
sessionStorage.closedLastTab = '2';
$(window).on('unload beforeunload', function() {
      sessionStorage.closedLastTab = '1';
});
19
ответ дан Mohamad Rostami 25 August 2018 в 01:38
поделиться

По крайней мере, для хрома, есть официальный ответ с 2013 года: API-интерфейс chrome.tabs .

-1
ответ дан Ofek Shilon 25 August 2018 в 01:38
поделиться
Другие вопросы по тегам:

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