Как правильно передать URL на страницу iframe? - PullRequest
1 голос
/ 15 января 2012

На моем сайте поддерживаются следующие URL-адреса:

(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

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

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

(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+'/';
      }
}

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

1 Ответ

0 голосов
/ 16 января 2012

Вот код, работающий правильно на главной странице:

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 + '/';
      }
}

Донне знаю, как это сделать.

...