Pergunta

Eu estou tendo um momento difícil escrever o que parece deve ser um simples if! Eu preciso dele para dizer se mod não é igual a, b ou c - então fazer isso. Aqui está o que eu estava tentando, mas não tiveram sucesso:

var mod = CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
   doSomething();
}

Quando eu digito isso em meu editor ele diz que há um erro, especificamente que "O nome da entidade deve seguir a 'e' imediatamente na referência de entidade." .. e não está funcionando quando eu ir para teste.

Qualquer ajuda é apreciada !!


UPDATE: O url: esber.squarespace.com

O script completo:

<script type="text/javascript" src="/storage/scripts/sessvars.js"></script>
<script type="text/javascript">
<![CDATA[ 

onload=function(){
 sessvars.browserConfirmation?'none':'';
 sessvars.ageConfirmation?'none':'';
}; 

var mod = Squarespace.Constants.CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
   if(sessvars.ageConfirmation != "yes"){
      window.location = "/verify/";
   };
};

]]>
</script> 

Eu quero que cada página no site para redirecionar automaticamente no carregamento da página para a página de verificação, a menos que seja a página de verificar (/ verificar), a página "Você não está verificado" (/ não-verificado), ou o login página (/ login) - a menos que o usuário já verificados, definindo os sessvars, então eles podem continuar para a página inicial

.

Para testar essa eu vou para esber.squarespace.com e clique em um dos itens do menu à direita (este menu acabaria por ser escondido quando eu terminar com a página) - quando eu tento ir para outra página sem veriying minha idade primeiro eu deveria ser redirecionado de volta para o / verificar página, mas isso acontecer is not.

Se eu revisar o script:

<script type="text/javascript" src="/storage/scripts/sessvars.js"></script>
<script type="text/javascript">

onload=function(){
 sessvars.browserConfirmation?'none':'';
 sessvars.ageConfirmation?'none':'';
}; 

var mod = Squarespace.Constants.CURRENT_MODULE_ID;
if (mod != "5827289") {
   if(sessvars.ageConfirmation != "yes"){
      window.location = "/verify/";
   };
};

</script> 

, em seguida, ele funciona muito bem (?)

Foi útil?

Solução

Tente isto:

// <![CDATA[ 

onload=function(){
 sessvars.browserConfirmation?'none':'';
 sessvars.ageConfirmation?'none':'';
}; 

var mod = Squarespace.Constants.CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
   if(sessvars.ageConfirmation != "yes"){
      window.location = "/verify/";
   };
};

// ]]>

Se isso não funciona, basta deixar o código lá para um pouco, para que possamos depurá-lo diretamente em seu site

Outras dicas

Enrole seu script em uma seção CDATA.

<script type="text/javascript">
<![CDATA[

// script here

]]>
</script>

Eu tentei exatamente o mesmo código que o seu e ele funciona muito bem:

function doSomething() {alert("doing");}
var CURRENT_MODULE_ID = 5195103000;
var mod = CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
   doSomething();
}

Ele fez 'doSomething'. Quando o valor é alterado para 5195103, nada acontece que é correta

O editor de lado, o que é o erro de script quando você executá-lo e qual é o browser que utilizou? Eu suspeito que poderia ser um erro em outro lugar ou talvez relacionado com CURRENT_MODULE_ID?

Você está embutindo este javascript em um documento XML?

Parece que o documento XML não está bem formado, talvez porque o & deve ser escapado como &

O javascript por si parece bem também me

Tente:

var mod = CURRENT_MODULE_ID;
if (mod != "5827289" &amp;&amp; mod != "5195103" &amp;&amp; mod != "5181422") {
   doSomething();
}

Você vai descobrir que caminho se as necessidades javasciprt ser escapado

Editar em resposta ao comentário:

Tente o seguinte:

<script type="text/javascript">
<![CDATA[
var mod = CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
   doSomething();
}
]]>
</script>

Parece que seu editor apenas pensa que você está trabalhando com um documento XML. Você já tentou realmente executar isso em um navegador? Em caso afirmativo, o navegador também dar um erro?

Você está tentando comparar o ID como uma string ou valor? Você experimentá-lo sem aspas?

var mod = CURRENT_MODULE_ID;
if (mod != 5827289 && mod != 5195103 && mod != 5181422) {
   doSomething();
}

ou outro método seria a partida uso

var mod = CURRENT_MODULE_ID;
if (!mod.match("5827289|5195103|5181422")) {
   doSomething();
}

Eu tenho esse erro dentro de uma seção de script em um arquivo XSL.

Entity 'e' não definido

Eu adaptei a resposta acima dentro do meu roteiro e funcionou.

Observe a seção CDATA no segmento de código abaixo

<script>
  var  Quantity860=<xsl:value-of select="$QuantityOrdered_860" />;
  var  Quantity850=<xsl:value-of select="$QuantityOrdered_850" />;
  var  QuantityToReceive860=<xsl:value-of select="$QuantityLeftToReceive_860" />;

  if(parseFloat(Quantity860.textContent) !== parseFloat(Quantity850.textContent) <![CDATA[ && ]]> parseFloat(QuantityToReceive860.textContent) !== parseFloat(Quantity850.textContent))
  {
      Quantity860.style.color="#FF6347";
      Quantity850.style.color="#FF6347";
      QuantityToReceive860.style.color="#FF6347";
  }
</script>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top