2011-11-01 32 views
4

我在我的父页面中使用iframe ipage。我想要在父页面的JavaScript中查询字符串?如何从父页面获取查询字符串?

+1

http://stackoverflow.com/questions/647259/javascript-query-string ...你所在的页面。哼! –

+0

如何重定向到下一页? – Unknown

+0

你可以在iframe src中包含父url吗? - http://stackoverflow.com/questions/2743751/iframe-parent-url –

回答

13

我建议你用我最喜欢的功能:

function getQueryString() { 
       var queryStringKeyValue = window.parent.location.search.replace('?', '').split('&'); 
       var qsJsonObject = {}; 
       if (queryStringKeyValue != '') { 
        for (i = 0; i < queryStringKeyValue.length; i++) { 
         qsJsonObject[queryStringKeyValue[i].split('=')[0]] = queryStringKeyValue[i].split('=')[1]; 
        } 
       } 
       return qsJsonObject; 
      } 

刚刚从像这样子窗口调用它,查询字符串作为一个对象而定。

例如,如果您有查询字符串?name=stack,你想要得到它,尝试:

getQueryString().name 

这将返回stack

+0

请问为什么最后一行是'return((qsJsonObject!= null)?(qsJsonObject):(null));'而不仅仅是'return qsJsonObject;'?在代码原样的情况下,qsJsonObject永远不会为null,因为当它声明它被分配给一个空对象时。 – rossipedia

+0

哦是对不起:D它可能是从旧代码泄漏;)谢谢我编辑它 – Marwan

+2

只是为了说明,如果帧来自不同的域,这将不会工作... –

0

@Marawan的不错答案。 - 如果它可以帮助任何人......我 扩展了这种选择的目标作为参数(自我/母)

function getQueryString(target) { 
    if (target == 'parent') { 
     var queryStringKeyValue = window.parent.location.search.replace('?', '').split('&'); 
    } 
    else { 
     var queryStringKeyValue = window.location.search.replace('?', '').split('&'); 
    } 

    var qsJsonObject = {}; 
    if (queryStringKeyValue != '') { 
     for (i = 0; i < queryStringKeyValue.length; i++) { 
      qsJsonObject[queryStringKeyValue[i].split('=')[0]] = queryStringKeyValue[i].split('=')[1]; 
     } 
    } 
    return qsJsonObject; 
} 

如。

getQueryString('parent').id; // get iframe parent url ?id=foo 
getQueryString().id; // get this url ?id=foo 
相关问题