2012-04-12 63 views
1

我有以下页面:访问元素,其中包含当前<script>

<div><script>AddSomeContent(??, 1)</script></div> 
<div><script>AddSomeContent(??, 2)</script></div> 

我需要更换??与周围<div> DOM对象,因此函数AddSomeContent可以修改它。有没有这样做的机会?

之前有任何其他意见:我没有任何其他选项。我已经试图破解一些现有的页面,只有我可以控制的内容是<script>的内容。

我正在使用jquery,但我可以更改它。

编辑:澄清。 AddSomeContent样子:

function AddSomeContent(somediv, parameter) 
{ 
    $(somediv).append('there goes some data, that I dynamically create from some stuff depending on the parameter'); 
} 

我想第一个div包含具有parameter = 1造成的,第二个div parameter=2

+0

混淆你正在试图完成 – 2012-04-12 15:57:20

+0

做的DIV有任何形式的什么唯一标识符? @PatrickScott它显示他正在尝试将包含脚本标记的div对象作为参数传递给AddSomeContent() – Snuffleupagus 2012-04-12 15:58:01

+0

@Patrick Scott他正在尝试诸如HTML和JS中的

之类的东西。 user1090190不,这就是问题所在。 – 2012-04-12 15:59:11

回答

4

你可以试试这个,虽然这是一个黑客颇有几分:

(function() { 
    var scr = document.getElementsByTagName('script'), 
     parent = scr[scr.length - 1].parentNode; 
    // parent is the parent node of the last script on the page 
})(); 

如果您已经在<script>这样的代码中获得了代码,那么当它运行时,页面上的最后一个脚本将是包含它的代码。

+0

但是如果你不知道,如果脚本标签是最后一个呢? – 2012-04-12 16:00:11

+2

在浏览文档之前,浏览器会立即运行每个'

1

我记得以前的问题。每个处理过的脚本都会将页面上的脚本数量加1,并按顺序处理它们。所以这个功能将获得当前的脚本数:

function countScripts() { 
    return document.scripts.length; 
} 

然后你可以去让这个脚本的parentNode:

var thisScriptParent = document.scripts[countScripts()].parentNode;