一个javascript函数可在循环文件外运行,其他则不能

时间:2018-08-31 13:23:07

标签: javascript bbpress

BBpress使用loop-single-reply.php和content-single-topic.php在主题内显示页面。我已经对这两个文件进行了编辑,以获得一些额外的功能。

一切正常,但是我不禁怀疑为什么我必须在loop-single-reply.php文件中放置一个javascript函数才能工作,而我又可以在content_single_topic.php中放置另一个javascript

这是我正在使用的代码,loop-single-reply.php:

<button class="button-best-like" onClick="return shareMeta('<?php echo $correct_link; ?>', '<?php echo $fb_excerpt; ?>', 'fb-image-<?php echo $reply_id; ?>'); ga('send','event','Facebook','share','like', 0)">
<i class="fa fa-facebook-official" aria-hidden="true" title="Share on Facebook"></i>
</button>

<script>
function shareMeta(link, description, replyId) {
    var title           = '<?php echo $fb_title; ?>';
    var replyImages     = document.getElementById(replyId).getElementsByTagName('img');
    var defaultImage    = '/uploads/2017/12/Hero-image.jpg';
    var result;
    if (replyImages.length > 0) {
        for(var i=0, l=replyImages.length; i<l; i++) {
            if(replyImages[i].height >= 200 && replyImages[i].width >= 200) {
                result = i;
                break;
            }
        }
        if (result == null) {
            var image = defaultImage;
        } else {
            var image = replyImages[result].src;
        }
    } else {
        var image = defaultImage;
    }
    shareOverrideOGMeta(link, title, description, image);
}
</script>

以及content-single-topic.php代码

<script>
function shareOverrideOGMeta(overrideLink, overrideTitle, overrideDescription, overrideImage) {
    FB.ui({
        method: 'share_open_graph',
        action_type: 'og.likes',
        action_properties: JSON.stringify({
            object: {
                'og:url': overrideLink,
                'og:title': overrideTitle,
                'og:description': overrideDescription,
                'og:image': overrideImage
            }
        })
    });
}
</script>

当我尝试将shareMeta函数放置在content-single-topic.php内时,所有操作都会停止。因此,我必须将其放入loop-single-reply.php中才能工作。但是在这种情况下,该功能被打印了15次,这似乎有点

为什么?有没有更好的办法? 请记住,这是我第一次尝试使用javascript,因此可能有更好的方法。

0 个答案:

没有答案