【问题标题】:How to pass correct urls to iframe page?如何将正确的网址传递给 iframe 页面?
【发布时间】:2012-01-15 13:58:37
【问题描述】:

我的网站支持以下网址:

(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,这里没问题。因此,第 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+'/';
      }
}

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

【问题讨论】:

    标签: javascript iframe location


    【解决方案1】:

    这是在主页上正常工作的代码:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      相关资源
      最近更新 更多