我有一个加载某些JavaScript包的网页。
www.mySite.com
如果我在浏览器控制台中输入JavaScript命令,我就可以与它们进行交互。
让我们来看看
alert('5')
作为一个简单的例子。
我希望在没有浏览器控制台的情况下执行相同的JavaScript调用,但需要通过特定的URL执行:
www.mySite.com/?value=5
这样就可以执行我的JavaScript命令了吗?
没有Page beeing重新加载/刷新但保持实际状态。
我的方法是在Django View中捕获扩展URL并执行JavaScript命令。
查看:
class ShowPage(View):
def get(self, request, caseId):
value = request.GET.get('value', '')
if(value is not ''):
// execute JavaScript here...
return HttpResponse("<script>alert(" + value + ")</script>")
else:
...
return render(request, 'template.html', context)
但这会导致我输入网页时丢失了我的页面。
有没有人知道如何保留实际的浏览器内容? 这样可以调用加载的Javascript包吗?
另一个想法是通过Ajax调用JavaScript。但是如何将Django中的URL映射到Ajax请求?
答案 0 :(得分:1)
您当前的代码在许多级别上都存在问题,特别是因为它允许用户在您的页面上执行任意JS。这称为Cross-site Scripting (XSS) attack。
另一个问题是,您似乎想要在不“更改页面状态”的情况下添加GET参数。在这里,您必须记住,根据定义,GET请求是客户端和服务器之间的通信。您可以使用JS人为地更改URL的外观,但无法在不重新加载的情况下在同一页面上提交GET请求。
这就是为什么你当然想要使用AJAX,它允许你从另一个页面中获取内容并将它们返回到后台的当前页面。通常这是通过创建一个返回JsonResponse
的视图(在Django 1.7+中)来完成的(参见Creating a JSON response using Django and Python)。
一个简化的例子是编码一个只显示一些文本的视图。然后你可以使用AJAX检索这个文本(我推荐jQuery用于此 - 它很简单且记录完备)并随心所欲地做任何事情,包括alert
它。
答案 1 :(得分:-1)
尝试使用&#39;#&#39;:
www.mySite.com#command
这不会重新加载网站。
也许这也有帮助:
url:https://css-tricks.com/snippets/javascript/get-url-and-url-parts-in-javascript/
url:Get current URL in web browser
&#39;#&#39;:http://www.w3schools.com/html/html_links.asp
编辑:
使用&#39; eval()&#39;执行输入: