0

このスクリプトは Stack Overflow で見つけました。

window.params = function(){
    var params = {};
    var param_array = window.location.href.split('?')[1].split('&');
    for(var i in param_array){
        x = param_array[i].split('=');
        params[x[0]] = x[1];
    }
    return params;
}();

これは、PHP が で行うように、URL をデータに分割します$_GET

それを使用してiframeを更新する別の関数があります。URL からデータを取得し、これらのデータの一部が存在する場合は別のデータを追加したいと考えています。Firebugは、それが定義されていないことを示していますsearchが、なぜですか?

function RefreshIFrames(MyParameter) {
    var cat = window.params.cat;
    var category = window.params.category;
    var search = window.params.search;

    if (search.length>0 && category.length>0){
        window.location.href="http://siriusradio.hu/kiskunfelegyhaza/video/index.php?search="+search+"&category="+category+"&rendez="+MyParameter;
    }

    if (cat.length>0){
        window.location.href="http://siriusradio.hu/kiskunfelegyhaza/video/index.php?cat="+cat+"&rendez="+MyParameter;
    }

    if (cat.length==0 && category.length==0 && search.length==0){
        window.location.href="http://siriusradio.hu/kiskunfelegyhaza/video/index.php?rendez="+MyParameter;
    }
    alert(window.location);
}
4

1 に答える 1

0

ランデズを追加したい場合、または既存のランデズを変更したい場合は、これを行います - URL は実際にはhttp://siriusradio.hu/kiskunfelegyhaza/video/index.phpで始まっていると想定しているため、作成する必要はありません。入ってきたものとは別の URL が必要な場合はお知らせください

パラメーター スニペットが適切に機能しませんでした (通常の配列では in を使用しないでください)。

ここにテスト済みのコードがあります

function getParams(passedloc){
  var params = {}, loc = passedloc || document.URL;
  loc = loc.split('?')[1];
  if (loc) {
    var param_array = loc.split('&');
    for(var x,i=0,n=param_array.length;i<n; i++) {
      x = param_array[i].split('=');
      params[x[0]] = x[1];
    }
  }
  return params;
};

function RefreshIFrames(MyParameter,passedloc) { // if second parm is specified it will take that 
  var loc = passedloc || document.URL; // 
  window.param = getParams(loc); 
  loc = loc.split("?")[0]+"?"; // will work with our without the ? in the URL
  for (var parm in window.param) {
    if (parm != "rendez") loc += parm +"="+ window.param[parm]+"&";
  }
  // here we have a URL without rendez but with all other parameters if there
  // the URL will have a trailing ? or & depending on existence of parameters
  loc += "rendez="+MyParameter;
  window.console && console.log(loc)
  // the next statement will change the URL
  // change window.location to window.frames[0].location to change an iFrame
  window.location = loc; 
}

// the second parameter is only if you want to change the URL of the page you are in
RefreshIFrames("rendez1","http://siriusradio.hu/kiskunfelegyhaza/video/index.php?cat=cat1&search=search1");
RefreshIFrames("rendez2","http://siriusradio.hu/kiskunfelegyhaza/video/index.php?search=search2");
RefreshIFrames("rendez3","http://siriusradio.hu/kiskunfelegyhaza/video/index.php?rendez=xxx&search=search2");
RefreshIFrames("rendez4","http://siriusradio.hu/kiskunfelegyhaza/video/index.php");

// here is how I expect you want to call it    
RefreshIFrames("rendez5"​); // will add or change rendez=... in the url of the current page
于 2012-10-17T07:33:27.933 に答える