-2

Я пытаюсь перейти на веб-страницу с помощью скрипта контента. Однако функция продолжает работать, потому что каждый раз, когда страница изменяется, она проходит через скрипт. Мне было интересно, есть ли лучший способ сделать это, так как это зависание ресурса, а также запрещает пользователю взаимодействовать со страницей из-за постоянного обновления.открытие окна и переход на страницу

Вот код, о котором идет речь, извините, если это выглядит странно. В jQuery у меня не более нескольких недель знаний.

$(document).ready(function(){ 
    console.log("Made it here" + window.location.href); 

    loc = window.location.href; 
    match = loc.match('http://url.com/uc/'); 
    if (match) { 

     window.location = "http://url.com/uc/health/index/1"; 
     console.log("2 here"); 

     window.location = "http://url.com/uc/health/communication/createSelectTemplate"; 

     console.log("3 here"); 
     chrome.storage.local.get('formOption', function(result) { 
      document.getElementById('formTemplate').value = result.formOption; 
      document.forms[0].submit(); 
     }); 

    } 
}); 

Причины я должен перемещаться три окна, прежде чем использовать значение, потому что тот, кто сделал этот сайт имеет таймаут печенье и страница не может быть вызвана до предыдущей нагрузки. Это скрипт контента tho, поэтому весь код находится на следующей странице. Может быть, если бы был способ проверить точный url? Но когда я играл с этим некоторое время назад, компьютер не различал.

urlhere.com/uc/ 

и

urlhere.com/uc/health/index/1 
+2

почему вы $ (документ) .ready внутри $ (документ) .read? –

+4

'window.location' загрузит новый URL-адрес страницы с новым контентом, а весь следующий код не будет работать –

+0

Я пытался подождать, пока каждая страница будет готова.Но, глядя в нее, он ничего не делает, поэтому я их удаляю. –

ответ

2

Каждый раз, когда вы ориентируетесь (например, сразу после назначения window.location), ваш скрипт прекращает выполнение выгружается со страницей, и когда следующая страница загружается, сценарии содержание действительно загружены еще раз. Если загружен тот же скрипт, с таким же начальным состоянием он будет выполнять ту же операцию.

Возможных решений (есть много):

  1. быть более точным с соответствием (= лучше обратите внимание на самом деле меняется состояние).

    loc.match('http://url.com/uc/') проверяет только, что адрес содержит эту строку - все URL-адреса, которые вы показываете. Почему бы просто не использовать loc == 'http://url.com/uc/' (и проверить промежуточные страницы)?

  2. Используйте мелкозернистые скрипты контента (= загрузка разных скриптов).

    Манифест определяет, какие страницы получают сценарии при загрузке. Я предполагаю, что у вас есть что-то вроде этого:

    "content_scripts" : [{ 
        "js" : ["jquery.js", "content1.js"], 
        "matches": ["http://*"] 
    }] 
    

    Вы можете сделать несколько сценариев, и Chrome проанализирует URL-адреса. Например, content1.js выполнит первую переадресацию, content2.js сделает вторую.

    "content_scripts" : [{ 
        "js" : ["jquery.js", "content1.js"], 
        "matches": ["http://url.com/uc/"] 
    }, { 
        "js" : ["jquery.js", "content2.js"], 
        "matches": ["http://url.com/uc/health/index/1"] 
    }] 
    
  3. Используйте некоторое постоянное состояние (которое сохраняется между навигации), чтобы указать, на какой стадии редирект вы на (= изменение контроля со стороны государства самостоятельно).

    данной страницы sessionStorage идеально подходит для этого, так как это только постоянные на вкладке:

    if (match) { 
        switch (sessionStorage.redirectStage) { 
        case 3: 
         // We're at the final page, do actual work 
         break; 
        case 2: 
         sessionStorage.redirectStage = 3; 
         window.location = "http://url.com/uc/health/communication/createSelectTemplate"; 
         break; 
        default: // Includes initial state when it's unset 
         window.location = "http://url.com/uc/health/index/1"; 
        } 
    } 
    
+0

Ты спасатель жизни и дал много хорошей информации! Огромное спасибо. –

+0

Тo, как вы думаете, ваш третий ответ будет немного лучше для производительности по сравнению с первым, что я изменил? –

 Смежные вопросы

  • Нет связанных вопросов^_^