如何将正确的URL传递到iframe页面

How to pass correct urls to iframe page?

本文关键字:iframe 页面 URL      更新时间:2023-09-26

我的网站支持以下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的形式显示我的网站。该站点支持setLocationonLocationChanged方法来定义哈希,并在相应地更改哈希时做出反应。

我已经为所有页面定义了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+'/';
      }
}

但它不能正常工作。我的方法出了什么问题?

以下是主页上正常工作的代码:

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

不知道如何让它变得普通。