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();
            });
        });
    }
}

我知道这可能是不正确的,或者任何接近正确的地方,但我在正确的轨道上吗?老实说,当谈到 javascript 时,我是一个完整的菜鸟。提前致谢

4

1 回答 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 不是来自您的域,您将无法从中获取任何数据。如果是这种情况,请阅读有关同源政策的更多信息。

于 2013-10-21T20:51:36.040 回答