我正面临一个棘手的问题与我的代码,希望得到一些帮助。下面是我的代码片段:
<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>
如果你在浏览器中检查源代码,你应该会看到这个函数是空的