سؤال

في ظروف معينة، ولدي صفحة على شبكة الإنترنت أن يحصل على فتح في iframe. عندما يكون تحميله في هذا الإطار من، أنا في حاجة إليها لتعيين موقع نافذة إلى مورد لتحميل ملف (كل هذا في محاولة لجعل تحديثا لسكريبت ... كل شرعي، راجع للشغل). للأسف، عندما أفعل:

top.location.href = "http://userscripts.org/...";

وأحصل على خطأ مشيرا إلى أن أعلى باطل. عند استخدام "نافذة" بدلا من "كبار"، فايرفوكس يحمل النص الذي قدمته النصي في إطار iframe، ولكن غرسمونكي غير قادر على الكشف عن ذلك كتحديث لسبب ما. هناك طريقة أخرى لتحديد موقع الإطار الذي افتقدته بطريقة أو بأخرى؟

وتحرير: المستخدمين من مخطوطتي زيارة الصفحة عمل محدد في (أولا). يتم تحميل بلدي النصي في تلك الصفحة باستخدام البرنامج المساعد فايرفوكس دعا غرسمونكي. بلدي النصي يخلق iframe على الصفحة تمت زيارتها، ويقوم بتحميل الصفحة الخاصة بي (الثانية) إلى أن IFRAME. ثم يقوم بتحميل غرسمونكي مخطوطتي على صفحتي، والذي يتحقق قيمة على صفحتي لمعرفة ما إذا تم تحديث البرنامج النصي. إذا تم تحديث البرنامج النصي، ولست بحاجة للتنقل مستخدمي موقعي بعيدا عن الموقع الذي زاروا أصلا (كما لاحظ "أولا")، وإلى (الثالث) موقع آخر (userscripts.org). نأمل أن هذا يزيل بعض الالتباس.

هل كانت مفيدة؟

المحلول

وأخيرا وجدت أن غرسمونكي توفر وظيفة "GM_OpenInTab (رابط)" الذي يفتح علامة تبويب جديدة في فايرفوكس مع رابط محدد. وهذا ما يسمح لي iframe لفتح علامة تبويب جديدة مع موقع البرنامج النصي محدثة لغرسمونكي إلى تحديث. في حين أن هذا ليس بالضبط الحل كنت أبحث عنه، وأنها تعمل بسلاسة مع عدم وجود أخطاء.

GM_openInTab("http://userscripts.org/...") ;

وشكرا للجميع لالإدخال. فمن الممكن أن غرسمونكي المرامل بطريقة أو بأخرى مخطوطات لمنع هذا النوع من السلوك التي يمكن استخدامها لأغراض خبيثة.

و~ ~ MD5SUM

نصائح أخرى

ويجب أن يكون لدى الموقعين نفس اسم المضيف (المجال). قد ترغب في أن تستخدم parent بدلا من top.

هل يمكن أن حاول القيام بما يلي (مقتبس من شيء يمكنني استخدام):

function checkWebPage() {
    try {
        if (top != self) {
            top.location.href = "http://userscripts.org/...";
        } else {
            self.location.href = "http://userscripts.org/...";
        }
    } catch (e) {}
}

وعملت عدة مرات مع iframe ولقد وجدت أنه أكثر أمانا للعمل مع الدولة من الوثيقة. وسوف تمرير قانون مع مثال على ذلك.

في هذا المثال أنا باستخدام مسج، ولكن ليس من الضروري حصول على وظائف.

<head>
<script>
(function($) {
 $.documentCtrolState = function(d,f,t)
 {
    try{
      t=(typeof(t)=="undefined")?100:t;
      if (d.readyState=="complete") //the document has been completely loaded, successfully or unsuccessfully
         f(true);
      else
         setTimeout(function(){$.documentCtrolState.call(this,d,f,t);}, t);
    }catch(ex){
         f(false, ex);
    }
 };
})(jQuery);

$(function(){

   $myIframeRef = $(document.myIFrame);
   $myIframeRef.attr("src", "mypage.php");

   $.documentCtrolState($myIframeRef.window.document, ThenLoadIFrame, 100);

});

ThenLoadIFrame = function(state, ex)
{
   alert("State " + state);
}


</script>
</head>
<body>
<iframe src="" id="myIFrame"></iframe>
</body>

وunsafeWindow.parent.location.href = رابط. عملت لبلدي في غرسمونكي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top