Запуск jquery из URL [дубликат]

Решения здесь:

  1. Используйте None в качестве значения по умолчанию (или nonce object) и включите его, чтобы создать свои значения во время выполнения; или
  2. Используйте параметр lambda в качестве параметра по умолчанию и вызовите его в блоке try, чтобы получить значение по умолчанию (это то, что требуется для лямбда-абстракции).

Второй вариант хорош, потому что пользователи функции могут проходить в вызываемом, который может уже существовать (например, type)

4
задан Iladarsda 18 July 2011 в 17:38
поделиться

4 ответа

Вы можете поместить код на эту веб-страницу, которая исследует параметры запроса в URL-адресе, а затем, основываясь на том, что она находит, вызывает любую функцию javascript, которую вы хотите.

В вашем конкретном примере упрощенная версия будет выглядеть так:

// code that runs when page is loaded:
if (window.location.search == "?XYZ") {
    XYZ();
}

, или если вы хотите, чтобы он запускал любую функцию, присутствующую там, вы можете извлечь это из строки и запустить любое имя.

// code that runs when page is loaded:
if (window.location.search.length > 1) {
    var f = window.location.search.substr(1);  // strip off leading ?
    try {
        eval(f + "()");  // be careful here, this allows injection of javascript into your page
    } catch(e) {/* handler errors here */}
}

Разрешение произвольного javascript, которое будет запущено на вашей странице, может иметь или не иметь нежелательных последствий для безопасности. Было бы лучше (если возможно) поддерживать только определенный набор ранее существовавших функций, которые вы ищете и знаете, безопасны, а не выполняют произвольный javascript, как второй пример.

8
ответ дан jfriend00 20 August 2018 в 21:36
поделиться
  • 1
    Также может использоваться некоторая магия: location.search.replace(/^\?(.+)$/, function(all, funcName) { eval(funcName + '()') }) – RReverser 18 July 2011 в 18:13

Я так считаю:

if(location.href == ""){
    xyz();
else{

}
0
ответ дан Jason Spick 20 August 2018 в 21:36
поделиться

Вы можете вызвать глобально объявленную функцию, используя объект window:

function bar(str) {
    alert("hello" + str);   
}

// assuming location is "http://example.com?bar"
var fn = window.location.search.replace("?", "");
window[fn](" Dovhakiin"); // 'hello Dovhakiin'
0
ответ дан karim79 20 August 2018 в 21:36
поделиться
  • 1
    – jfriend00 18 July 2011 в 18:14
  • 2
    @ jfriend00 - странно, я попробовал, и все получилось просто отлично. – karim79 18 July 2011 в 18:57
  • 3
    Не работает для меня в Chrome. В каком браузере вы его попробовали? – jfriend00 18 July 2011 в 19:06

В строке URL вы всегда можете поместить javascript:XYZ();

Попробуйте, после загрузки этого URL: http://jsfiddle.net/maniator/mmAxY/show/

2
ответ дан Neal 20 August 2018 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: