Как использовать onhashchange с динамическими элементами

0

Итак, у меня есть два окна выбора на веб-странице, но в разных якорях (один на странице, другой в iframe), и я пытаюсь получить код для определения, в каком его привязке, а затем передать выбранное значение в это поле для ссылки. Вот мой код:

function locationHashChanged() {
    if (location.hash === "#player") {
        function setText(text) {
            var selectVal = text;
            var url = $('twitter').attr("href");
            url = 'https://twitter.com/intent/tweet?button_hashtag=stream&text=Just enjoying ' + selectVal + ' on';
            $('#twitter').attr("href", url);
        }
    }

    if (location.hash === "#embeds") {
        $(function () {
            var $twitter = $('twitter');
            $('#iframe').on('load', function () {
                $(this).contents().find('#cds').change(function () {
                    var selectVal = $(this).val() || 'nothing much';
                    url = 'https://twitter.com/intent/tweet?button_hashtag=stream&text=Just enjoying ' + selectVal + ' on';
                     $('#twitter').attr("href", url);
                }).change();
            });
        });
    }
}

Я знаю, что это, вероятно, не так, или где-то рядом, но я на правильном пути? Я честно полный noob, когда дело доходит до javascript. заранее спасибо

  • 0
    "в каком якоре" =
  • 0
    пожалуйста, скажи мне, что твой код не имеет такого отступа :-)
Показать ещё 1 комментарий
Теги:
url
hashchange

1 ответ

0

Помимо того, что именно выглядит ваша функция, она не выполняется при изменении хэша прямо сейчас.

Вы используете jQuery, чтобы вы могли прослушивать изменение хэша следующим образом:

$(window).on('hashchange', function() {
   // your locationHashChanged() function goes here
}); 

При этом каждый раз, когда хеш изменяется, ваша функция будет выполнена. Сама база вашего кода в порядке:

if (location.hash === "#player") {
    // this is executed if hash changed to #player
}

if (location.hash === "#embeds") {       
    // this is executed if hash changed to #embeds
}

Хотя внутри ваших блоков if вы объявляете функции (что здесь не имеет особого смысла).

Также обратите внимание, что если iframe не принадлежит вашему домену, вы не сможете получить от него какие-либо данные. Если это дело, прочитайте больше о той же политике происхождения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню