Может ли URL указать jQuery для запуска функции? - PullRequest
4 голосов
/ 18 июля 2011

У вас есть вопрос относительно URL и jQuery.

Могу ли я указать URL, чтобы сообщить jQuery о запуске функции?

например, http://www.website.com/about.html?XYZ

для запуска функции XYZ();

Ответы [ 4 ]

8 голосов
/ 18 июля 2011

Вы можете поместить код на этой веб-странице, который проверяет параметры запроса в 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, как во втором примере.

2 голосов
/ 18 июля 2011

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

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

0 голосов
/ 18 июля 2011

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

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 голосов
/ 18 июля 2011

Я так считаю:

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...