Twitter事件触发器没有实际的事件



我正面临一个棘手的问题与我的代码,希望得到一些帮助。下面是我的代码片段:

<a href="https://twitter.com/share" class="twitter-share-button" data-url="http://www.myurl.com/" data-text="My text" data-via="Via">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
<script>
    twttr.events.bind( 
          'tweet', 
              function (ev) {
        <?php
        $file = 'file.txt';
        $id = trim($_GET["id"]);
        $data = array("ID:$id", "CURRENT POSITION:$position", 'Twitter');
        file_put_contents($file, implode(" ",$data).PHP_EOL,FILE_APPEND);
        ?>
                            }
                    );
</script>

我不明白为什么我的函数(ev)每次加载页面时都会触发。它应该只触发一旦推文已发布。有人知道问题出在哪里吗?

你的函数不触发,你的PHP触发。PHP在浏览器看到它之前就在服务器上进行了计算。实际上,浏览器不知道如何处理PHP。这里发生的事情是,您的用户加载页面,它被PHP处理,PHP代码被执行,由于没有输出任何内容,因此函数为空。浏览器看到的代码是:

<script>
twttr.events.bind( 
      'tweet', 
          function (ev) {
                        }
                );
</script>

如果你在浏览器中检查源代码,你应该会看到这个函数是空的

最新更新