2012-01-15 3 views
1

URL, как ниже, поддерживаются на моем сайте:Как передать правильные URL-адреса на страницу iframe?

(1) http://mysite.example.com/section/ - main page 
(2) http://mysite.example.com/section/#page2 
(3) http://mysite.example.com/section/surname-name-middlename/ 
(4) http://mysite.example.com/section/surname-name-middlename/#page2 
(5) http://mysite.example.com/section/add 

Теперь я пытаюсь показать свой сайт в качестве фрейма на другом сайте. Этот сайт поддерживает setLocation и onLocationChanged методы определения хеша и реагируют, когда изменяется hash.

Я определил setLocation для всех страниц, здесь нет проблем. Таким образом, ссылки выше на сайте 3 партии выглядеть, как показано ниже:

(1) http://3rdpartysite.com/mypage 
(2) http://3rdpartysite.com/mypage#page2 
(3) http://3rdpartysite.com/mypage#surname-name-middlename 
(4) http://3rdpartysite.com/mypage#surname-name-middlename,page2 
(5) http://3rdpartysite.com/mypage#add 

Но сейчас я пытаюсь осуществить правильное onLocationChanged поведение.

section является общей частью для всех страниц.

Я попытался сделать следующее на главной странице (и не поддерживает опцию (4) выше):

// location here is everything after # in url: http://3rdpartysite.com/mypage#... 
function onLocationChanged(location) { 
    if (location.indexOf('page')>-1) { 
    window.location.href = '#'+location; 
    } else if (location == 'add') { 
     window.location.href = window.location.host + window.location.pathname + '/add'; 
    } else if (location != '') { 
     window.location.href = window.location.host + window.location.pathname + '/'+location+'/'; 
     } 
} 

Но это не работает должным образом. Что не так с моим подходом?

ответ

0

Вот код работает должным образом на главной странице:

function onLocationChanged(loc) { 
    var url = window.location.protocol + '//' + window.location.host + window.location.pathname; 
    if (loc.indexOf('page') > -1 && loc.indexOf(',page') == -1) { 
     window.location.href = '#' + loc; 
    } else if (loc == 'add') { 
     window.location.href = url + 'add'; 
    } else if (loc != '' && loc.indexOf(',page') > -1) { 
     window.location.href = url + '' + loc.split(',', 2)[0] + '/#' + loc.split(',', 2)[1]; 
    } else if (loc != '') { 
     window.location.href = url + '' + loc + '/'; 
    } 
} 

и вот код для других страниц (без опции (4) поддержка):

function onLocationChanged(loc) { 
    var url = window.location.protocol + '//' + window.location.host + '/' + window.location.pathname.split('/',3)[1] + '/'; 
    if (loc.indexOf('page')>-1) { 
    window.location.href = url + '#' + loc; 
    } else if (loc == 'add') { 
     window.location.href = url + 'add'; 
    } else if (loc != '') { 
     window.location.href = url + '' + loc + '/'; 
     } 
} 

Не знаю как сделать его общим.

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