I posted a thread here that dealt with how to replace an ASP code with Javascript cleaner. Well, I had a lot of help from Maicon and TobyMosque. Well, I made the changes, to my understanding and gives an error that I could not eliminate. See below the ASP code with mixed JS 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've made. Mr TobyMosque suggested an approach to me, to avoid eval
but could not do it, it was an error. I left eval
, try to make it work first and then try to improve the code. Here's 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();
}
This is the error you are giving:
Uncaught SyntaxError: Unexpected token.
This is what the debug brought in this error
.document.form01.3753742
The number is the registration number of a person that the search returns. What's wrong?
You have failed to load 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 error 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 trick here is just the form or frame opening in Modal form in Chrome. This happens only in IE.
I made this change and resolved. 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();
}