日历 javascript 通话不工作
calendar javascript call not working
编辑
我已经尝试了下面的建议,但它们仍然不起作用。我得到的错误是:
"Refused to execute inline script because it violates the following Content Security Policy directive: "default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'”。'unsafe-inline'关键字,散列('sha256-egiF+Vb0Vz6d/Eu2SO2D+0PSd3mbX/UWP8Bx7aqvuZQ='),或者需要随机数 ('nonce-...') 才能启用内联执行。另请注意,'script-src' 未明确设置,因此 'default-src' 用作后备。“
谁能解释一下这个意思?
我相信有一个简单的答案,如果有人能告诉我我做错了什么,我将不胜感激。我正在尝试在空白页面中调用基本日历。然而什么也没有发生。我已经验证了我知道要做的一切,但仍然没有出现。
<!DOCTYPE html>
<html>
<head>
<!--
Customize this policy to fit your own app's needs. For more guidance, see:
https://github.com/apache/cordova-plugin-whitelist/blob/master/README.md#content-security-policy
Some notes:
* gap: is required only on iOS (when using UIWebView) and is needed for JS->native communication
* https://ssl.gstatic.com is required only on Android and is needed for TalkBack to function properly
* Disables use of inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
* Enable inline JS: add 'unsafe-inline' to default-src
-->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
<link rel="stylesheet" type="text/css" href="css/index.css">
<title>Hello World</title>
<link rel="stylesheet" href="fullcalendar/fullcalendar.css" />
<script src="lib/jquery.min.js"></script>
<script src="lib/moment.min.js"></script>
<script src="fullcalendar/fullcalendar.js"></script>
<script>
$(document).ready(function() {
// page is now ready, initialize the calendar...
$('#calendar').fullCalendar({
// put your options and callbacks here
})
});
</script>
</head>
<body>
<div id="calendar"></div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
</body>
</html>
您的代码无法正常工作可能有多种原因。由于信息不足,无法查看详情。这是 Full Calendar
的工作示例。请关注:
$(document).ready(function() {
// page is now ready, initialize the calendar..
$('#calendar').fullCalendar({
weekends: false,
dayClick: function() {
alert('a day has been clicked!');
},
defaultView: 'agendaWeek'
});
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.3.2/fullcalendar.min.css" rel="stylesheet"/>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.3/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.3.2/fullcalendar.min.js"></script>
<div id='calendar'></div>
没有发生任何事情,因为内联脚本(即实际上是您页面的一部分,而不是从 linked .js 文件加载的脚本)已被您的内容安全策略禁用。这就是错误消息告诉您的内容。
假设您想要允许它们(尽管理论上存在 XSS 攻击的潜在风险),那么启用的线索就在您代码中其正上方的注释中:
Disables use of inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
- Enable inline JS: add 'unsafe-inline' to default-src
因此只需修改标记的 default-src
部分以包含该指令。更改自:
default-src 'self'
到
default-src 'self' 'unsafe-inline'
如果您不想这样做,则替代方法是将 Javascript 从您的页面移动到单独的 .js 文件,然后使用 [=13] 向其提供 link =] 标签类型。
请注意,其中的 none 在任何方面都与 fullCalendar 直接相关,并且完全与安全策略有关,它控制允许页面使用的脚本和资源。有关此主题的介绍,请参阅 https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP。
编辑
我已经尝试了下面的建议,但它们仍然不起作用。我得到的错误是:
"Refused to execute inline script because it violates the following Content Security Policy directive: "default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'”。'unsafe-inline'关键字,散列('sha256-egiF+Vb0Vz6d/Eu2SO2D+0PSd3mbX/UWP8Bx7aqvuZQ='),或者需要随机数 ('nonce-...') 才能启用内联执行。另请注意,'script-src' 未明确设置,因此 'default-src' 用作后备。“
谁能解释一下这个意思?
我相信有一个简单的答案,如果有人能告诉我我做错了什么,我将不胜感激。我正在尝试在空白页面中调用基本日历。然而什么也没有发生。我已经验证了我知道要做的一切,但仍然没有出现。
<!DOCTYPE html>
<html>
<head>
<!--
Customize this policy to fit your own app's needs. For more guidance, see:
https://github.com/apache/cordova-plugin-whitelist/blob/master/README.md#content-security-policy
Some notes:
* gap: is required only on iOS (when using UIWebView) and is needed for JS->native communication
* https://ssl.gstatic.com is required only on Android and is needed for TalkBack to function properly
* Disables use of inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
* Enable inline JS: add 'unsafe-inline' to default-src
-->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
<link rel="stylesheet" type="text/css" href="css/index.css">
<title>Hello World</title>
<link rel="stylesheet" href="fullcalendar/fullcalendar.css" />
<script src="lib/jquery.min.js"></script>
<script src="lib/moment.min.js"></script>
<script src="fullcalendar/fullcalendar.js"></script>
<script>
$(document).ready(function() {
// page is now ready, initialize the calendar...
$('#calendar').fullCalendar({
// put your options and callbacks here
})
});
</script>
</head>
<body>
<div id="calendar"></div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
</body>
</html>
您的代码无法正常工作可能有多种原因。由于信息不足,无法查看详情。这是 Full Calendar
的工作示例。请关注:
$(document).ready(function() {
// page is now ready, initialize the calendar..
$('#calendar').fullCalendar({
weekends: false,
dayClick: function() {
alert('a day has been clicked!');
},
defaultView: 'agendaWeek'
});
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.3.2/fullcalendar.min.css" rel="stylesheet"/>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.3/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.3.2/fullcalendar.min.js"></script>
<div id='calendar'></div>
没有发生任何事情,因为内联脚本(即实际上是您页面的一部分,而不是从 linked .js 文件加载的脚本)已被您的内容安全策略禁用。这就是错误消息告诉您的内容。
假设您想要允许它们(尽管理论上存在 XSS 攻击的潜在风险),那么启用的线索就在您代码中其正上方的注释中:
Disables use of inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
- Enable inline JS: add 'unsafe-inline' to default-src
因此只需修改标记的 default-src
部分以包含该指令。更改自:
default-src 'self'
到
default-src 'self' 'unsafe-inline'
如果您不想这样做,则替代方法是将 Javascript 从您的页面移动到单独的 .js 文件,然后使用 [=13] 向其提供 link =] 标签类型。
请注意,其中的 none 在任何方面都与 fullCalendar 直接相关,并且完全与安全策略有关,它控制允许页面使用的脚本和资源。有关此主题的介绍,请参阅 https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP。