2011-08-01 49 views
2

我正在使用PHP来生成一个使用外部(我的网站)JavaScript文件来设置隐藏表单输入值的动态Web表单。我的表单在重新发布到外部网站之前提交给我自己的PHP页面。外部网站要求提供此隐藏值。当JavaScript禁用客户端时,有没有办法从PHP执行外部Javascript?

许多使用我的表单的浏览器没有启用javascript,因此跟踪失败,我无法提交到外部网站。是否有任何方法执行javascript文件从我的php代码中获取跟踪信息而不发送给客户端浏览器?

这是一个伪代码模拟了代码的,我要处理表单的帖子:

if ($doPOST) { 
    //Check POSTed parameters for tracking id ($tid) 
    if ($tid == ''){ 
    //Execute external javascript to get tid 
    } 
    //Post form data to external site 
} 

我已经环顾四周,找不到任何相关信息,但如果你知道一个网站,的这是解释让我知道。为了澄清,我没有找到有关增加javascript文件客户端的信息。

编辑: 这是表单执行的Javascript。我没有权力改变这个脚本。数字48891是不是硬编码在它执行更改脚本:

onReady=(function(ie){var d=document;return ie?function(c){var n=d.firstChild,f=function(){try{c(n.doScroll('left'))}catch(e){setTimeout(f,10)}};f()}:/webkit|safari|khtml/i.test(navigator.userAgent)?function(c){var f=function(){/loaded|complete/.test(d.readyState)?c():setTimeout(f,10)};f()}:function(c){d.addEventListener("DOMContentLoaded",c,false)}})(/*@cc_on [email protected]*/); 
var test_track=function(data){onReady(function(){document.getElementById('test_track').value = data.TID})} 
test_track({"TID" : "488891"}); 
+0

我最好奇的,您能不能给我们要执行JS的例子吗? – tomdemuyt

+0

我发布了需要执行的Javascript。 –

+0

否。如果JavaScript被禁用,那么JavaScript将不会运行。 –

回答

1

如果你有时间压力(我不是说这是一个好主意),你可以解析出TID值并将其写入隐藏表单值'test_track'。

你可以使用JavaScript的内容:

$js = file_get_contents('http://example.com/source.js'); 
+0

最大的窍门是让脚本执行,以便我可以获取该值。由于客户端没有启用javascript,有没有办法在PHP中请求脚本,以便我可以解析它的服务器端? –

+0

有,用该命令更新答案。 – tomdemuyt

+0

谢谢汤姆,这是一个黑客,但我会看到它会发生什么。 –

2

号如果JavaScript是在客户机上的浏览器禁用你不能得到的信息进行浏览器。我建议你使用PHP进行跟踪

3

是的,你可以执行JavaScript服务器端。但是,对于一个片段来说,这不会有多大意义,并且您将无法访问DOM。请参阅v8cgi项目以获取服务器端JavaScript实现。

只需在PHP中重写它。

+0

此代码位于我的网站外部,因此我无法重写它。感谢您使用v8cgi参考。 –

相关问题