我有一个名为“opposite_team_boxscore”的数据库字段,其中包含此javascript小部件:
<script type="text/javascript" src="http://widgets.sports-reference.com/wg.fcgi?css=1&site=br&url=%2Fboxes%2FCHA%2FCHA201506180.shtml&div=div_ChicagoWhiteSoxbatting"></script>
我已将它加载到我的页面上:
$.post(phpPage, {thisDate: dateOfGame}, function(returnedData) {
var obj = jQuery.parseJSON( returnedData );
//...some code here
var str = obj["opposing_team_box_score"];
var newdiv = document.createElement('div');
newdiv.innerHTML = str;
document.getElementById('opposing_boxscore').appendChild(newdiv);
});
代码会在页面上呈现,但它不会运行:
<div id="opposing_boxscore">
<div><script type="text/javascript" src="http://widgets.sports-reference.com/wg.fcgi?css=1&site=br&url=%2Fboxes%2FCHA%2FCHA201506180.shtml&div=div_ChicagoWhiteSoxbatting"></script></div></div>
我相信这是因为在dom加载到页面后加载了脚本。
一旦脚本在页面上,我该如何让它运行?这在jquery中甚至可能吗?
**********编辑*************************** 我基本上放弃了这种方法。这不是jquery的设置。我寻找并找到了一个可以提供我需要的数据的API。
答案 0 :(得分:0)
$(document).ready(function(){
// do your stuff
});
当DOM准备就绪时,内部代码运行。
答案 1 :(得分:0)
如果您需要使用SCRIPT标记运行外部JavaScript,则必须将其插入HEAD标记...
类似这样的事情
var head = document.head;
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://widgets.sports-reference.com/wg.fcgi?css=1&site=br&url=%2Fboxes%2FCHA%2FCHA201506180.shtml&div=div_ChicagoWhiteSoxbatting';
head.insertBefore(script,head.firstChild);
好消息是“YES”,你可以使用脚本标签动态加载javascript,坏消息是你试图加载的javascript是使用document.write并且不可能写入文档来自异步加载的外部脚本,除非明确打开它。
答案 2 :(得分:0)
似乎返回状态代码500
Internal Server Error
?
尝试在结束<\/script>
时替换转义的结束正斜杠。
$.post("/echo/json/", {
json: JSON.stringify({
"opposing_team_box_score": "<script>alert(123)<\/script>"
})
}, function (returnedData) {
var str = returnedData["opposing_team_box_score"];
$("head").append(str);
}, "json");
jsfiddle http://jsfiddle.net/99yk0o8L/1/
var obj = {
"opposing_team_box_score":"<script>alert(123)<\/script>"
};
var str = obj["opposing_team_box_score"];
$("head").append(str);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div></div>
&#13;
答案 3 :(得分:0)
我发现这种方法不起作用。我继续使用API来获取数据,而不是尝试将javascript代码存储在数据库字段中并使其运行。