仅在显示源代码时更改js文件的位置


changing a js file location only when the source-code is showed

我试图改变一个js文件的位置,当一个访问者显示源代码

javascript函数在访问者显示源代码时不起作用.

我的想法是创建一个文件,放一个javascript代码来删除文件,在这种情况下,文件不会被删除,如果有人显示源代码:

$check="$ip-$views-$id";
fopen("$check.txt","w");  //CREATING A FILE
// DELETING THE FILE ABOVE BY JAVASCRIPT , IT WON'T BE DELETED IF SOMEONE ENTERED VIA THE SOURCE-CODE MODE
?>
<div id="countno"></div>
<script type="text/javascript">
$('#countno').load('del.php?name=<?echo $check;?>&location=' + ' #countno');
</script>
<?
if (file_exists("$check.txt")) { //IF SOMEONE SHOWED THE SOURCE CODE
$new_location="fake_location.js";
}
else{
$new_location=$old_location;
}
?>
<script src="<?echo $new_location;?>"></script>

现在的问题是,file_exists PHP函数显示该文件仍然存在,即使它已经被javascript代码删除了。

file_exists函数在javascript代码之前执行!

任何帮助/解决方案,使PHP函数检查文件后,javascript代码?我知道这有点不可能,但值得!

你所描述的是不可能的。PHP是服务器端语言,而javascript是客户端语言。因此,页面上的PHP总是在页面上的Javascript执行之前执行。当你这样做的时候,没有办法让你的Javascript先执行。

相反,您可以做的是将PHP和Javascript分开。让你的file_exists在另一页检查。例:check.php .

if (file_exists("$check.txt")) {
    echo "fake_location.js";
} else {
    echo $old_location;
}

然后使用ajax调用向check.php发出请求,并根据check.php的输出加载其他脚本。

<script>
$.ajax({
    method: "GET",
    url: "check.php"
})
.done(function(script) {
    $("#check").attr("src", script);
});
</script>
<script id="check"></script>

然而,如果你的目标是防止人们找出你的javascript的位置,这是不可能的。现在大多数浏览器都可以在HTML发生变化时检查它。他们可以看到加载的脚本,而不必单独加载源代码。