javascript不在safari中运行
我有一个有趣的问题。由于某些原因,Safari浏览器上的javascript逻辑门无法正常工作。以下是分项数字: 使用javascript不在safari中运行,javascript,php,safari,Javascript,Php,Safari,我有一个有趣的问题。由于某些原因,Safari浏览器上的javascript逻辑门无法正常工作。以下是分项数字: 使用$(#id).load(my/script.php)函数调用整个脚本 我创造了一个干净的世界 $perm=$\u POST['permission'] 我创建html变量 $html\u内容。=“ 我回显html <?=$html_content?> 基于权限ai更改我在div中应用的bsview函数的功能 if ("<?=$perm?>" != "
$(#id).load(my/script.php)
函数调用整个脚本
我创造了一个干净的世界
$perm=$\u POST['permission']
我创建html变量
$html\u内容。=“
我回显html
<?=$html_content?>
基于权限ai更改我在div中应用的bsview函数的功能
if ("<?=$perm?>" != "user"){
function bsview(id) {
console.log('manager');
}
}else{
function bsview(id) {
console.log('user_view');
}
}
if(“!=”用户”){
功能视图(id){
console.log('manager');
}
}否则{
功能视图(id){
console.log('user_view');
}
}
然后发生了一些有趣的事情。在签入Chrome、IE和Firefox之后,我确认代码正在工作。但是当我在Safari中运行代码时,应该返回“TRUE”的逻辑门不等于“user”,而是返回FALSE。
这是我的Safari调试工具中的代码
if ("manager" !== "user"){
console.log('manager');
function bsview(id) {
console.log('manager');
}
}else{
function bsview(id) {
console.log('user_view');
}
}
</script>
if(“管理者”!=“用户”){
console.log('manager');
功能视图(id){
console.log('manager');
}
}否则{
功能视图(id){
console.log('user_view');
}
}
当然,it控制台会记录“用户\视图”
好的。如果有人对我糟糕的代码有任何见解或批评,请告诉我。我很想知道为什么会发生这种情况,以及如何避免同样的事情发生。根据
将函数声明放在if/else
内是无效的。您应该在if
外声明函数名,然后分配给它
var bsview;
if ("<?=$perm?>" != "user"){
bsview = function (id) {
console.log('manager');
}
}else{
bsview = function (id) {
console.log('user_view');
}
}
var-bsview;
如果(“!=”用户”){
bsview=功能(id){
console.log('manager');
}
}否则{
bsview=功能(id){
console.log('user_view');
}
}
或者您可以将其简化为:
function bsview(id) {
console.log('<?= $perm == "user" ? 'user_view' : 'manager' ?>');
}
功能视图(id){
控制台日志(“”);
}
根据
将函数声明放在if/else
内是无效的。您应该在if
外声明函数名,然后分配给它
var bsview;
if ("<?=$perm?>" != "user"){
bsview = function (id) {
console.log('manager');
}
}else{
bsview = function (id) {
console.log('user_view');
}
}
var-bsview;
如果(“!=”用户”){
bsview=功能(id){
console.log('manager');
}
}否则{
bsview=功能(id){
console.log('user_view');
}
}
或者您可以将其简化为:
function bsview(id) {
console.log('<?= $perm == "user" ? 'user_view' : 'manager' ?>');
}
功能视图(id){
控制台日志(“”);
}
您不能在Javascript中有条件地定义函数声明。函数声明被提升到包含函数级别的作用域,因此定义了两个函数,但由于它们具有相同的名称,最后一个函数优先。如Barmar所示,您可以使用函数赋值。您不能有条件地定义函数声明在Javascript中。函数声明被提升到包含函数级别的作用域,因此定义了两个函数,但由于它们具有相同的名称,最后一个优先。正如Barmar所示,您可以使用函数赋值。谢谢。我想我必须这样做。我只是不知道Safari会做出不同反应的原因。谢谢谢谢你的帮助。我想我必须这么做。我只是不知道为什么Safari会有不同的反应。谢谢你的帮助。