Ответ 1
Попробуйте этот
$("#firstPageId").live("pagecreate",function(){
$.mobile.changePage("otherPage.html");
});
Кроме того, вы можете использовать loadPage
Надеюсь, это поможет:)
am с помощью jquery mobile 1.0
Я хочу перенаправить с first.html на otherPage.html, не показывая содержимое first.html
$("#pageId").live("pagebeforecreate", function(event) {
window.location.href = "otherPage.html";
});
-i пытался почти каждое событие, но не удалось. first.html отображается на мгновение.
Затем я попытался с событием 'pagebeforeload', но он не был запущен
$( document ).bind( "pagebeforeload", function( e, data ){
console.log("pagebeforeload starting"); // NO LOGGING HAPPENING
window.location.href = "otherPage.html";
e.preventDefault();
data.deferred.resolve( data.absUrl, data.options, response.page);
});
$( document ).bind( "pageload", function( e, data ){
console.log("Page successfully loaded into DOM..."); // NO LOGGING HAPPENING
});
-ам не очень понятно об этом событии и не нашел для него приемлемого примера. -Может кто-нибудь помочь плз!
Попробуйте этот
$("#firstPageId").live("pagecreate",function(){
$.mobile.changePage("otherPage.html");
});
Кроме того, вы можете использовать loadPage
Надеюсь, это поможет:)
Событие pagebeforeload запускается только при загрузке внешних страниц:
Всякий раз, когда внешняя страница загружается в DOM приложения, запускаются 2 события. Первый - pagebeforeload. Второе событие будет либо pageload, либо pageloadfailed.
Моя единственная идея обойти это заключалась бы в том, чтобы асинхронно загружать содержимое страницы first.html, что не идеально, потому что в итоге вы создаете 2 http-запроса для одной и той же страницы. Однако это даст вам возможность вызывать только first-contents.html, если это необходимо, иначе вы можете перенаправить на otherPage.html без каких-либо показов. например:
<script>
someCondition=true;
if(someCondition) {
window.location.href = "otherPage.html";
} else {
$(document).ready(function() {
$('body').load('first-content.html', function() {
//other stuff after the contents have loaded: like the rest of your jquery relating to first.html
});
});
}
</script>
Убедитесь, что теги тела пустые на странице first.html.
Вы пробовали просто не использовать событие. Код JS будет выполнен, так как он встречается, поэтому убедитесь, что ваш условный код находится в верхней части страницы (где-то в голове).
<html>
<head>
<script>
if (condition)
{
window.location.href = "otherPage.html";
}
</script>
<!-- rest of page -->
Трудно сказать, чего вы пытаетесь достичь. Как и состояния Endophage, вы можете сделать простой переадресацию JavaScript, если все, что вы хотите сделать, это перейти на другую страницу.
Я предполагаю, что вы хотите иметь возможность выбирать, отображать ли содержимое первой или второй страницы, но все же оставаться на первой странице.
Вы можете добавить следующий код. Убедитесь, что вы добавили его , прежде чем включите jquery.mobile.
<script>
$(document).bind('mobileinit', function () {
// disable autoInitialize
$.mobile.autoInitializePage = false;
});
$(function () {
var displaySecondPage = true;
if (displaySecondPage) {
// load page2.html and replace #page1 with contents of #page2 on page2.html
$('#page1').replaceWith($('<div />').load('page2.html #page2', function() {
// continue initialize
$.mobile.initializePage();
}));
}
else {
// continue initialize
$.mobile.initializePage();
}
});
</script>
В основном мы привязываемся к mobileinit
, поэтому мы можем отключить autoInitialize
. Это дает нам больший контроль над отображением первой страницы.
Теперь мы можем использовать стандартный обработчик jQuery для проверки нашего условия, и если true, загрузите содержимое страницы2.html и замените страницу #page1
. Заметьте, что я использую метод $.load
с синтаксисом фрагмента страницы. Это означает, что вам нужно знать идентификатор страницы, который вы хотите загрузить.
После загрузки страницы вы можете вызвать $.mobile.initializePage
, чтобы разрешить jquery mobile отображать новую страницу.
Чтобы содержимое первой страницы отображалось во время этой загрузки, я добавляю в таблицу стилей следующий CSS:
div[data-role='page'] {
display: none;
}
jQuery Mobile позаботится о том, чтобы показывать и скрывать страницы, поэтому по умолчанию их скрытие будет гарантировать, что вы не получите вспышку неуправляемого контента.
В любом случае, надеюсь, что это поможет.
Попробуйте использовать это:
<head>
<script>
window.location.replace('otherPage.html');
</script>
</head>
Я знаю, что это старо, но я потратил некоторое время, пытаясь решить это, поэтому это может быть полезно кому-то.
Теперь, используя jquery mobile 1.3, вы можете просто установить URL-адрес данных на <div data-role="page" data-url="...">
на целевой странице. JQM обнаружит это и обновит URL-адреса соответственно.
Подробнее здесь http://jquerymobile.com/demos/1.0rc2/docs/pages/page-links.html
И даже некоторые демо здесь http://jquerymobile.com/demos/1.3.0-beta.1/docs/demos/redirect/index.html
Так как кажется, что на это есть очень ответы; особенно при использовании многостраничного шаблона.. здесь ссылка на ответ на мобильные формы jquery, который работает, вставляя # тег в URL-адрес перед страницей init
Не работает в моем случае, так как я не хочу, чтобы пользователь просматривал хеш-тег, но он начинался. подробнее...