1
I posted a thread here which dealt with how to replace an ASP code with cleaner Javascript. Well, I had a lot of help, from Maicon and Tobymosque. Well, I made the appropriate changes, to my mind and gives an error that I could not eliminate. See below the ASP code with JS mixed to be replaced:
function selecionar(num_seq_proposta_ts, num_proposta, nome_titular){
var txt_chamada = '';
try {
var oMyObject = window.dialogArguments;
txt_chamada = "oMyObject";
var aux = oMyObject.document;
}
catch (e){
txt_chamada = "window.parent.opener";
}
var txt_prefixo = '';
var txt_sufixo = '';
//Somente joga o valor para o campo se ele existir
<%if trim(nome_campo_cod_ts)<> "" then%>
try {
txt_prefixo = '.document.form01.';
txt_sufixo = '';
<%if trim(ind_tipo_proposta_pj) = "S" then%>
var onum_seq_proposta_pj_ts = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%><%Response.Write nome_campo_cod_ts%>' + txt_sufixo);
<%else%>
var onum_seq_proposta_ts = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%><%Response.Write nome_campo_cod_ts%>' + txt_sufixo);
<%end if%>
} catch (e) {
txt_prefixo = '.document.all[\'';
txt_sufixo = '\']';
<%if ind_tipo_proposta_pj = "S" then%>
var onum_seq_proposta_pj_ts = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%><%Response.Write nome_campo_cod_ts%>' + txt_sufixo);
<%else%>
var onum_seq_proposta_ts = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%><%Response.Write nome_campo_cod_ts%>' + txt_sufixo);
<%end if%>
}
<% else %>
try {
txt_prefixo = '.document.form01.';
txt_sufixo = '';
<%if ind_tipo_proposta_pj = "S" then%>
var onum_seq_proposta_pj_ts = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%>num_seq_proposta_pj_ts' + txt_sufixo);
<%else%>
var onum_seq_proposta_ts = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%>num_seq_proposta_ts' + txt_sufixo);
<%end if%>
} catch (e) {
txt_prefixo = '.document.all[\'';
txt_sufixo = '\']';
<%if ind_tipo_proposta_pj = "S" then%>
var onum_seq_proposta_pj_ts = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%>num_seq_proposta_pj_ts' + txt_sufixo);
<%else%>
var onum_seq_proposta_ts = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%>num_seq_proposta_ts' + txt_sufixo);
<%end if%>
}
<%end if%>
<%if trim(ind_tipo_proposta_pj) = "S" then%>
if (onum_seq_proposta_pj_ts != null ) {
onum_seq_proposta_pj_ts.value = num_seq_proposta_ts;
}
<%else%>
if (onum_seq_proposta_ts != null ) {
onum_seq_proposta_ts.value = num_seq_proposta_ts;
}
<%end if %>
<%if trim(nome_campo_tit)<>"" then%>
try {
txt_prefixo = '.document.form01.';
txt_sufixo = '';
var onum_proposta = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%><%Response.Write nome_campo_tit%>' + txt_sufixo);
} catch (e) {
txt_prefixo = '.document.all[\'';
txt_sufixo = '\']';
var onum_proposta = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%><%Response.Write nome_campo_tit%>' + txt_sufixo);
}
<%else %>
try {
txt_prefixo = '.document.form01.';
txt_sufixo = '';
<%if ind_tipo_proposta_pj = "S" then%>
var onum_proposta_pj = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%>num_proposta_pj' + txt_sufixo);
<%else%>
var onum_proposta = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%>num_proposta' + txt_sufixo);
<%end if%>
} catch (e) {
txt_prefixo = '.document.all[\'';
txt_sufixo = '\']';
<%if ind_tipo_proposta_pj = "S" then%>
var onum_proposta_pj = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%>num_proposta_pj' + txt_sufixo);
<%else%>
var onum_proposta = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%>num_proposta' + txt_sufixo);
<%end if%>
}
<%end if %>
<%if trim(ind_tipo_proposta_pj) = "S" then%>
if (onum_proposta_pj != null ) {
onum_proposta_pj.value = num_proposta;
<%if indOrigem = "J" then%>
onum_proposta_pj.onchange();
<%end if%>
}
<%else%>
if (onum_proposta != null ) {
onum_proposta.value = num_proposta;
<%if indOrigem = "J" then%>
onum_proposta.onchange();
<%end if%>
}
<%end if%>
<%if trim(nome_campo_prop)<>"" then%>
try {
txt_prefixo = '.document.form01.';
txt_sufixo = '';
var onome_titular = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%><%Response.Write nome_campo_prop%>' + txt_sufixo);
} catch (e) {
txt_prefixo = '.document.all[\'';
txt_sufixo = '\']';
var onome_titular = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%><%Response.Write nome_campo_prop%>' + txt_sufixo);
}
<% else %>
try {
txt_prefixo = '.document.form01.';
txt_sufixo = '';
var onome_titular = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%>nome_titular' + txt_sufixo);
} catch (e) {
txt_prefixo = '.document.all[\'';
txt_sufixo = '\']';
var onome_titular = eval(txt_chamada + txt_prefixo + '<%Response.Write prefixo%>nome_titular' + txt_sufixo);
}
<% end if %>
if (onome_titular != null )
onome_titular.value = stringReplace(nome_titular, "|*|", "'");
<%if trim(funcao_executar) <> "" then%>
try{
var aux = eval(txt_chamada + ".<%Response.Write funcao_executar%>");
}catch(e){
window.returnValue = 'window.<%Response.Write funcao_executar%>';
}
<%end if%>
<% if ucase(indsubmit) = "TRUE" then %>
eval(txt_chamada + ".document.form01.submit()");
<%end if%>
parent.self.close();
}
This is the code I made. Colleague Tobymosque suggested an approach to avoid the eval
but I couldn’t do it, it was a mistake. I left the eval
, try to make it work first and then try to improve the code. See what I did:
var asp = {};
Object.defineProperty(asp, "ind_tipo_proposta_pj", { value: "<%= ind_tipo_proposta_pj %>", writable: false, enumerable: true, configurable: true });
Object.defineProperty(asp, "prefixo", { value: "<%= prefixo %>", writable: false, enumerable: true, configurable: true });
Object.defineProperty(asp, "nome_campo_cod_ts", { value: "<%= nome_campo_cod_ts %>", writable: false, enumerable: true, configurable: true });
Object.defineProperty(asp, "nome_campo_tit", { value: "<%= nome_campo_tit %>", writable: false, enumerable: true, configurable: true });
Object.defineProperty(asp, "indOrigem", { value: "<%= indOrigem %>", writable: false, enumerable: true, configurable: true });
Object.defineProperty(asp, "nome_campo_prop", { value: "<%= nome_campo_prop %>", writable: false, enumerable: true, configurable: true });
Object.defineProperty(asp, "funcao_executar", { value: "<%= funcao_executar %>", writable: false, enumerable: true, configurable: true });
//------------------------------------------------------------------------
function selecionar(num_seq_proposta_ts, num_proposta, nome_titular){
//Adequação para chamada modal dentro do chrome
var txt_prefixo = '';
var txt_sufixo = '';
var txt_chamada = "";
var onome_titular = '';
var janela = null;
if (window.dialogArguments) {
janela = window.dialogArguments;
txt_prefixo = '.document.form01.';
txt_sufixo = '';
} else if (window.parent.opener) {
janela = window.parent.opener;
txt_prefixo = '.document.all[\'';
txt_sufixo = '\']';
} else {
janela = window.parent.dialogArguments;
txt_prefixo = '.document.form01.';
txt_sufixo = '';
}
if (janela) {
var form01 = null;
if (janela.document) {
form01 = janela.document.form01;
}
else {
form01 = janela.elements;
}
var onum_seq_proposta_pj_ts = null;
var onum_seq_proposta_ts = null;
var onum_proposta = null;
var onum_proposta_pj = null;
var nome_campo_cod_ts_id = "<%= trim(nome_campo_cod_ts) %>";
var onum_seq_proposta_pj_ts_id = "<%= trim(ind_tipo_proposta_pj)%>" == "S";
window["objeto"] = null;
if(nome_campo_cod_ts_id != ""){
if(asp.ind_tipo_proposta_pj == "S")
onum_seq_proposta_pj_ts = eval(txt_chamada + txt_prefixo + asp.prefixo + asp.nome_campo_cod_ts + txt_sufixo);
else
onum_seq_proposta_ts = eval(txt_chamada + txt_prefixo + asp.prefixo + asp.nome_campo_cod_ts + txt_sufixo);
}
else
{
if(asp.ind_tipo_proposta_pj == "S")
onum_seq_proposta_pj_ts = eval(txt_chamada + txt_prefixo + asp.prefixo + num_seq_proposta_pj_ts + txt_sufixo);
else
onum_seq_proposta_ts = eval(txt_chamada + txt_prefixo + asp.prefixo + num_seq_proposta_ts + txt_sufixo);
}
if (asp.ind_tipo_proposta_pj == "S"){
if (onum_seq_proposta_pj_ts != null ) {
onum_seq_proposta_pj_ts.value = num_seq_proposta_ts;
}
}
else
{
if (onum_seq_proposta_ts != null ) {
onum_seq_proposta_ts.value = num_seq_proposta_ts;
}
}
if(nome_campo_tit != ""){
onum_proposta = eval(txt_chamada + txt_prefixo + asp.prefixo + asp.nome_campo_tit + txt_sufixo);
}
else
{
if(asp.ind_tipo_proposta_pj == "S")
{
onum_proposta_pj = eval(txt_chamada + txt_prefixo + asp.prefixo + num_proposta_pj + txt_sufixo);
}
else
{
onum_proposta = eval(txt_chamada + txt_prefixo + asp.prefixo + num_proposta + txt_sufixo);
}
}
if (asp.ind_tipo_proposta_pj == "S"){
if (onum_proposta_pj != null ) {
onum_proposta_pj.value = num_proposta;
if(asp.indOrigem == "j")
{
onum_proposta_pj.onchange();
}
}
}
else
{
if (onum_proposta_pj != null ) {
onum_proposta.value = num_proposta;
if(asp.indOrigem == "j")
{
onum_proposta.onchange();
}
}
}
if(asp.nome_campo_prop != "")
{
onome_titular = eval(txt_chamada + txt_prefixo + asp.prefixo + asp.nome_campo_prop + txt_sufixo);
}
else
{
onome_titular = eval(txt_chamada + txt_prefixo + asp.prefixo + nome_titular + txt_sufixo);
}
if (onome_titular != null )
onome_titular.value = stringReplace(nome_titular, "|*|", "'");
if (funcao_executar != "")
{
if (window.dialogArguments || window.parent.dialogArguments) {
var aux = eval(txt_chamada + "." + asp.funcao_executar);
}
else
{
window.returnValue = "window." + asp.funcao_executar;
}
}
}//Fim janela
try
{
window.parent.dialogWindow.close();
}
catch (e) {
parent.self.close();
}
//<% if ucase(indsubmit) = "TRUE" then %>
// eval(txt_chamada + ".document.form01.submit()");
//<%end if%>
//parent.self.close();
}
That’s the mistake you’re making:
Uncaught Syntaxerror: Unexpected token .
This is what debug brought about in this mistake
.Document.form01.3753742
The number is the registration number of a person the search returns. What is wrong?
Missing to load the var txt_chamada
:
if (window.dialogArguments) {
janela = window.dialogArguments;
txt_chamada = 'window.dialogArguments';
txt_prefixo = '.document.form01.';
txt_sufixo = '';
} else if (window.parent.opener) {
janela = window.parent.opener;
txt_chamada = 'window.parent.opener';
txt_prefixo = '.document.all[\'';
txt_sufixo = '\']';
} else {
janela = window.parent.dialogArguments;
txt_chamada = 'window.parent.dialogArguments';
txt_prefixo = '.document.form01.';
txt_sufixo = '';
}
Now the mistake is this:
Uncaught Syntaxerror: Unexpected number
Tobymosque, let me clarify something here. This call:
if (asp.nome_campo_tit) {}
try {
txt_prefixo = '.document.form01.';
txt_sufixo = '';
var onum_proposta = eval(txt_chamada + txt_prefixo + asp.prefixo + asp.nome_campo_tit + txt_sufixo);
} catch (e) {
txt_prefixo = '.document.all[\'';
txt_sufixo = '\']';
var onum_proposta = eval(txt_chamada + txt_prefixo + asp.prefixo + asp.nome_campo_tit + txt_sufixo);
}
}
With this call the form does not open Modal in Chrome. It was necessary to do this:
if (window.dialogArguments) {
janela = window.dialogArguments;
} else if (window.parent.opener) {
janela = window.parent.opener;
} else {
var janela = window.parent.dialogArguments;
}
Soon I will make this change, to suit my need. Our trampo here is exactly these form or frame open in a Modal way in Chrome. This happens only in IE.
I made this change and solved. Thanks to Toby and Maicon.
function selecionar(num_seq_proposta_ts, num_proposta, nome_titular) {
var janela = window.dialogArguments || window.parent.opener || window.parent.dialogArguments;
if (janela) {
var form01 = null;
if (janela.document) {
form01 = janela.document.form01;
}
else {
form01 = janela.elements;
}
var container = form01 || janela.document.all;
var onum_seq_proposta_ts = container[asp.prefixo + asp.nome_campo_cod_ts];
var onum_proposta = container[asp.prefixo + asp.nome_campo_tit];
var onome_titular = container[asp.prefixo + asp.nome_campo_prop]
if (onum_seq_proposta_ts != null) {
onum_seq_proposta_ts.value = num_seq_proposta_ts;
}
if (onum_proposta != null) {
onum_proposta.value = num_proposta;
if (asp.indOrigem === "J") {
onum_proposta.onchange();
}
}
if (onome_titular != null) {
onome_titular.value = stringReplace(nome_titular, "|*|", "'");
}
var aux = null;
if (asp.funcao_executar) {
if (janela[asp.funcao_executar]) {
aux = janela[asp.funcao_executar]();
} else if (window[asp.funcao_executar]) {
window.returnValue = window[asp.funcao_executar]()
}
}
}
try {
window.parent.dialogWindow.close();
}
catch (e) {
parent.self.close();
}
//if (asp.indsubmit && janela.document.form01) {
// janela.document.form01.submit();
//}
parent.self.close();
}
pnet, the problem of
eval()
is precisely the difficulty of debugging the same, so try to wrapper for the Val as in the following example, instead of calling theeval()
call the methoddebugEval()
as in the example and see if the script is being mounted correctly.– Tobias Mesquita
@Tobymosque, ok I’ll do it. I didn’t close the previous post because I haven’t been able to make it work yet. That approach you went through, I couldn’t do, declaring the window["object"]...
– pnet
@Tobymosque, I remembered something here. My situation is this: I make my changes on my local machine, save, copy the form I changed, then I put it on the server and I rotate. This server has no way to log and etc...
– pnet
take a look at this mine reply, especially in the part that has the comment
//conteudo.contentWindow.opener = window;
, maybe doing this will solve the I i compatibility problem between Chrome and IE (dialog vs popup).– Tobias Mesquita