2014-01-07 1 views
1

A Google gadget - это iframe, встроенный в контейнер для гаджета, например Google Sites. Пример: https://sites.google.com/site/michaelmccolin/testКак получить параметры URL гаджета Google

Однако, поскольку Google гаджеты и Google Sites находятся на двух разных доменах вы не можете получить гаджет родительский URL с помощью window.parent.location. Хорошей новостью является то, что родительский URL-адрес включен как значение параметра в URL-адрес гаджета (iframe). Пример:
https://slr19h92al8so047kuchhg5aog1sb42l-a-sites-opensocial.googleusercontent.com/gadgets/ifr?url=http://hosting.gmodules.com/ig/gadgets/file/116132513635841516857/sample.xml&container=enterprise&view=default&lang=en&country=ALL&sanitize=0&v=3bad4b3f87c8b199&libs=core&mid=167&parent=https://sites.google.com/site/michaelmccolin/test#st=e%3DAIHE3cDvCGmbZDEAvjS%252BWTpqst9FseOLNB%252BMd8IoyLxY3kypcxAriuGzs%252FtCova0JAhrFqKK2kKB3qFgru2PBUTYWMIIcmPaw4iAl7DIaUqyPKO56DpM9mcbQqh1bIa23t89yrL7maxL%26c%3Denterprise&rpctoken=9057528913578437337

Вопрос заключается в том, как я могу получить значение параметра из parent гаджета URL.
Спасибо!

ответ

1

Вы можете получить доступ к строке запроса следующим образом:

var queryString = location.search.substr(1); 

С этого момента, это легче разбить его на разделителей и создать объект из него:

var queryObject = {}; 

queryString.split('&').forEach(function objectFromPair(pairString){ 
    var pairArray = pairString.split('='); 

    queryObject[ pairArray[ 0 ] ] = pairArray[ 1 ]; 
}); 

Далее, получить parent ключ:

var parentUrl = queryObject.parent; 
+0

Спасибо за ответ! 'location.search' дал мне идею: можно ли просто использовать' location.search.split ('parent =') [1] '? – Mori

+0

@RainLover вы легко могли бы, но только потому, что «parent» оказался последним параметром в строке запроса (хотя, если бы он не был, вы все равно могли бы получить его в одной строке, выполнив 'location.search.split (' parent = ') [1] .split ('? ') [0] '. Метод выше более подробный, но более многоразовый - BTW, я сделал пару исправлений в ответе выше, если вы решите пойти на это решение , – Barney