Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 浏览器可以处理一次性JS文件吗?_Javascript_Asp.net_Browser_Script Tag_External Script - Fatal编程技术网

Javascript 浏览器可以处理一次性JS文件吗?

Javascript 浏览器可以处理一次性JS文件吗?,javascript,asp.net,browser,script-tag,external-script,Javascript,Asp.net,Browser,Script Tag,External Script,我想隐藏JS的源代码,不让直接访问。所以我想制作一个一次性JS文件。我使用临时会话cookie。cookie在包含JS文件之前设置,然后过期 我的问题不是这个想法本身,而是浏览器如何操作JS文件?它是否会在我们编写标记时立即缓存JS文件的副本,或者脚本标记只是一个引用,浏览器应该始终能够访问JS文件 示例asp来源: <html> <body> <% response.cookies("tempJs")="yes"%> <script

我想隐藏JS的源代码,不让直接访问。所以我想制作一个一次性JS文件。我使用临时会话cookie。cookie在包含JS文件之前设置,然后过期

我的问题不是这个想法本身,而是浏览器如何操作JS文件?它是否会在我们编写
标记时立即缓存JS文件的副本,或者脚本标记只是一个引用,浏览器应该始终能够访问JS文件

示例asp来源:

<html>
  <body>
    <% response.cookies("tempJs")="yes"%>
    <script src="myscripts.asp"></script>
    <% response.cookies("tempJS")="no"%>
  </body>
</html>

一次性JavaScript示例(myscripts.asp):


document.write(“你好世界”);

我的答案不是你所问问题的答案,但可能仍然是你想要的答案

您需要了解在服务器端执行的脚本与在客户端执行的脚本之间的区别
Javascript在客户端执行,因此在
标记之间写入的任何内容都不会影响js的响应

所以你实际上是在做

  • 设置变量
    yes
    然后
  • 标记添加到您的响应中,然后
  • 将变量设置为false
  • 此响应发回后,变量的值仍然是
    no
    。变量的值将与响应一起作为Cookie发送回
  • 现在浏览器解析HTML
  • 查看添加到请求的cookie中没有设置值的
    myscripts.asp
    的标记和请求
  • 服务器将cookie的值视为
    no
    ,并相应地呈现脚本。您的案例中没有一行
    document.write(“Hello world”)(这可能是您询问缓存问题的原因。它没有被缓存。)

我想隐藏JS的.source,不让直接访问不可能,即使您删除了脚本标记,从dev tools网络中也可以看到您的代码。。你能做的最好的事情就是丑化你的js,或者在服务器端使用重要的逻辑。“所以我想生成一个一次性js文件。我使用一个临时会话cookie。cookie在包含js文件之前设置,然后过期。”-这意味着什么?请检查示例代码。我有一个临时cookie before标记,它正好在这个标记之后过期@ParvSharma@AliSheikhpour那是不可能的。cookie在文档正文之前发送,您不能为同一cookie发送两个不同的值。@AliSheikhpour您可以做的是一个立即过期的cookie。谢谢。关于有用的细节,我投票赞成你的回答。但正如你所说,主要问题是关于浏览器本身。我明白我的想法行不通,但我可以用其他一些想法再次提出这个问题。此外,您确定浏览器在页面加载后调用外部文件吗?或者逐行调用它们并最终显示一个静态输出文件?无论broser如何逐行执行或在页面加载后,结果都是相同的,dosent中的任何内容甚至都可以到达浏览器
<%
response.ContentType="text/javascript"
if request.cookies("tempJs")="yes" then
%>
    document.write ("Hello world");
<%
end if
%>