0

有没有可能,如果一个人有一个像这样的javascript变量:

var myVariable = "alert('BAM! It works!');"

将其发送到包含脚本标记的 html 页面,换句话说,如下所示: <script id="theScriptTag"></script>

通过“发送”,我的意思是在 Javascript 文件中是这样的:

getElementById("theScriptTag").innerHTML = myVariable;

现在也许人们通常不会这样做。如果有另一种方法可以将 Javascript 变量添加到 HTML 页面,请不要犹豫。我很难解释为什么我想这样做,只是我要这样做。

提前致谢!

编辑...

从所有评论中,我可以看出这是一些严重的不良做法。让我在这里为您提供概览和“大图”……在同一个 HTML 页面上,有一个表单和一个 div。现在,在用户填写表单并提交后,它会转到服务器并根据用户选择的变量生成“自定义 javascript”。然后,此自定义 javascript 旨在返回到客户端并执行。当它执行时创建/填充一个 div 元素,然后包含一个谷歌图表表(因此需要生成服务器端)。需要执行的JS如下所示:

var sendAttemptsChartTableData, sendAttemptsChartTable; 
google.load('visualization', '1', {packages:['table']}) 
 google.setOnLoadCallback(drawTable); 
 function drawTable() { 
sendAttemptsChartTableData = new google.visualization.DataTable();  
sendAttemptsChartTableData.addColumn('string','smsGuid')  
sendAttemptsChartTableData.addColumn('string','attemptNo')  
sendAttemptsChartTableData.addColumn('string','response')  
sendAttemptsChartTableData.addColumn('string','error')  
sendAttemptsChartTableData.addRows(1)  
sendAttemptsChartTableData.setCell(0,0,'092A49AA-E2EF-46D3-A83E-0932B17B649A')  
sendAttemptsChartTableData.setCell(0,1,'1')  
sendAttemptsChartTableData.setCell(0,2,'<aatsms><submitresult action="enqueued"     key="2066317199" result="1" number="0833756610"/><submitresult action="enqueued" key="2066317200" result="1" number="0833756610"/><submitresult action="enqueued" key="2066317201" result="1" number="0833756610"/><submitresult action="enqueued" key="2066317202" result="1" number="0833756610"/></aatsms>')  
sendAttemptsChartTableData.setCell(0,3,'')  
sendAttemptsChartTable = new  google.visualization.Table(document.getElementById('sendAttemptsTable')); 
var view = new google.visualization.DataView(sendAttemptsChartTableData);   
sendAttemptsChartTable.draw(view, {showRowNumber: true, allowHtml:false}); 
google.visualization.events.addListener(sendAttemptsChartTable, 'select', smsSearchHandler); 
}  
4

3 回答 3

3

根据您的编辑,我了解您的表单汇总会导致自定义脚本。类似JSONP的解决方案会起作用吗?基本上,您可以在当前文档中创建一个脚本标记,将其源指向处理表单并返回代码的服务器端脚本。

一个基本的例子:

function getScript(){
  /**process form, generate params**/
  var nwScript = document.createElement('script');
  nwScript.src = '/myscriptsrc/somescript.php?'+[generated parameters];
  document.body.appendChild(nwScript);
}
于 2012-05-07T12:45:30.810 回答
1

如果您的目标是执行字符串中包含的 javascript 代码,您可以使用以下内容:

var myVariable = "alert('BAM! It works!');";
eval(myVariable);
于 2012-05-07T12:23:37.773 回答
1

你想要做的基本上是这样的:

var myVariable = "alert('BAM! It works!');";
eval(myVariable);

eval获取您提供的字符串并“评估”内容 - 它执行您在字符串中提供的 javascript 内容。通常,您希望通过用户的输入来执行此操作。

但这被认为是坏习惯,因为:

  1. 它很慢
  2. 这是不安全的

通常你可以走另一种方式,所以你不需要使用eval. 在大多数情况下,这更清洁、更快、更安全。

也许您可以说出您要达到的目标,然后我们可以找到更好的解决方案。

于 2012-05-07T12:25:20.423 回答